r2323 - in trunk/src/target/OM-2007/openmoko-libs: . libmokoui

zecke at sita.openmoko.org zecke at sita.openmoko.org
Thu Jun 21 15:17:19 CEST 2007


Author: zecke
Date: 2007-06-21 15:17:19 +0200 (Thu, 21 Jun 2007)
New Revision: 2323

Modified:
   trunk/src/target/OM-2007/openmoko-libs/ChangeLog
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.c
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.h
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-ui.c
Log:
2007-06-21  Holger Hans Peter Freyther  <zecke at selfish.org>

        Don't require X11 in the OpenMoko API. Make the usage of
        xosd a private implementation detail.
        Convert MokoBanner to a singleton hopefully similiar to the ones
        in Gtk+.

        * libmokoui/moko-banner.c: Make it a true singleton
        (moko_banner_class_init): Remove unused parent_class
        (moko_banner_get_instance): Introduce the singleton method
        (moko_banner_show_text):
        (moko_banner_hide):
        * libmokoui/moko-banner.h: Don't hardcode X11
        * libmokoui/moko-ui.c:
        (moko_ui_banner_show_text): Use moko_banner_get_instance



Modified: trunk/src/target/OM-2007/openmoko-libs/ChangeLog
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/ChangeLog	2007-06-21 09:47:14 UTC (rev 2322)
+++ trunk/src/target/OM-2007/openmoko-libs/ChangeLog	2007-06-21 13:17:19 UTC (rev 2323)
@@ -1,3 +1,19 @@
+2007-06-21  Holger Hans Peter Freyther  <zecke at selfish.org>
+
+        Don't require X11 in the OpenMoko API. Make the usage of
+        xosd a private implementation detail.
+        Convert MokoBanner to a singleton hopefully similiar to the ones
+        in Gtk+.
+
+        * libmokoui/moko-banner.c: Make it a true singleton
+        (moko_banner_class_init): Remove unused parent_class
+        (moko_banner_get_instance): Introduce the singleton method
+        (moko_banner_show_text):
+        (moko_banner_hide):
+        * libmokoui/moko-banner.h: Don't hardcode X11
+        * libmokoui/moko-ui.c:
+        (moko_ui_banner_show_text): Use moko_banner_get_instance
+
 2007-06-16  Mickey  <mickey at openmoko.org>
 
 	* libmokoui/moko-scrolled-pane.h:

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.c	2007-06-21 09:47:14 UTC (rev 2322)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.c	2007-06-21 13:17:19 UTC (rev 2323)
@@ -17,7 +17,14 @@
  */
 
 #include "moko-banner.h"
+#include <xosd.h>
 
+/*
+ * private 'class member'
+ */
+static xosd* banner_osd = NULL;
+static MokoBanner *moko_banner_singleton = NULL;
+
 #undef DEBUG_THIS_FILE
 #ifdef DEBUG_THIS_FILE
 #define moko_debug(fmt,...) g_debug(fmt,##__VA_ARGS__)
@@ -29,13 +36,6 @@
 
 #define BANNER_GET_PRIVATE(o)   (G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_BANNER, MokoBannerPrivate))
 
-typedef struct _MokoBannerPrivate
-{
-} MokoBannerPrivate;
-
-/* parent class pointer */
-static GObjectClass* parent_class = NULL;
-
 /* signals */
 /* ... */
 
@@ -58,14 +58,10 @@
 static void
 moko_banner_class_init(MokoBannerClass* klass)
 {
-    /* hook parent */
-    GObjectClass* object_class = G_OBJECT_CLASS (klass);
-    parent_class = g_type_class_peek_parent(klass);
-
     /* add private */
-    g_type_class_add_private (klass, sizeof(MokoBannerPrivate));
 
     /* hook destruction */
+    GObjectClass* object_class = G_OBJECT_CLASS (klass);
     object_class->dispose = moko_banner_dispose;
     object_class->finalize = moko_banner_finalize;
 
@@ -76,24 +72,24 @@
     /* install properties */
 
     /* initialize libxosd and configure defaults */
-    klass->osd = xosd_create( 2 );
-    if ( !klass->osd )
+    banner_osd = xosd_create( 2 );
+    if ( !banner_osd )
         g_warning( "Could not create libxosd contect (%s). On Screen Display won't be available", xosd_error );
     else
     {
-        xosd_set_font( klass->osd, "-bitstream-bitstream vera sans-*-r-*-*-*-200-*-*" );
-        xosd_set_colour( klass->osd, "orange" ); // x11 should gain a moko-orange...
-        xosd_set_outline_offset( klass->osd, 2 );
-        xosd_set_outline_colour( klass->osd, "black" );
-        xosd_set_shadow_offset( klass->osd, 4 );
-        xosd_set_pos( klass->osd, XOSD_middle );
-        xosd_set_vertical_offset( klass->osd, -100 );
-        xosd_set_align( klass->osd, XOSD_center );
-        xosd_set_timeout( klass->osd, 2 );
+        xosd_set_font( banner_osd, "-bitstream-bitstream vera sans-*-r-*-*-*-200-*-*" );
+        xosd_set_colour( banner_osd, "orange" ); // x11 should gain a moko-orange...
+        xosd_set_outline_offset( banner_osd, 2 );
+        xosd_set_outline_colour( banner_osd, "black" );
+        xosd_set_shadow_offset( banner_osd, 4 );
+        xosd_set_pos( banner_osd, XOSD_middle );
+        xosd_set_vertical_offset( banner_osd, -100 );
+        xosd_set_align( banner_osd, XOSD_center );
+        xosd_set_timeout( banner_osd, 2 );
     }
 }
 
-MokoBanner*
+static MokoBanner*
 moko_banner_new(void)
 {
     return g_object_new(MOKO_TYPE_BANNER, NULL);
@@ -105,18 +101,25 @@
     /* Populate your instance here */
 }
 
+MokoBanner*
+moko_banner_get_instance(void)
+{
+    if ( G_UNLIKELY (!moko_banner_singleton) )
+        moko_banner_singleton = moko_banner_new();
+
+    return moko_banner_singleton;
+}
+
 void moko_banner_show_text(MokoBanner* self, const gchar* text, gint timeout)
 {
-    MokoBannerClass* klass = MOKO_BANNER_GET_CLASS( self );
-    g_return_if_fail( klass->osd );
+    g_return_if_fail( banner_osd );
     if ( timeout )
-        xosd_set_timeout( klass->osd, timeout );
-    xosd_display( klass->osd, 0, XOSD_string, text );
+        xosd_set_timeout( banner_osd, timeout );
+    xosd_display( banner_osd, 0, XOSD_string, text );
 }
 
 void moko_banner_hide(MokoBanner* self)
 {
-    MokoBannerClass* klass = MOKO_BANNER_GET_CLASS( self );
-    g_return_if_fail( klass->osd );
-    xosd_hide( klass->osd );
+    g_return_if_fail( banner_osd );
+    xosd_hide( banner_osd );
 }

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.h	2007-06-21 09:47:14 UTC (rev 2322)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-banner.h	2007-06-21 13:17:19 UTC (rev 2323)
@@ -20,7 +20,6 @@
 #define _MOKO_BANNER_H_
 
 #include <glib-object.h>
-#include <xosd.h>
 
 G_BEGIN_DECLS
 
@@ -37,11 +36,10 @@
 
 typedef struct {
     GObjectClass parent_class;
-    xosd* osd;
 } MokoBannerClass;
 
-GType moko_banner_get_type();
-MokoBanner* moko_banner_new();
+GType moko_banner_get_type(void);
+MokoBanner* moko_banner_get_instance(void);
 
 void moko_banner_show_text(MokoBanner* self, const gchar* text, gint timeout);
 void moko_banner_show_hide(MokoBanner* self);

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-ui.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-ui.c	2007-06-21 09:47:14 UTC (rev 2322)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-ui.c	2007-06-21 13:17:19 UTC (rev 2323)
@@ -7,9 +7,7 @@
     va_start( a, message );
     const gchar* string = g_strdup_vprintf( message, a );
     va_end( a );
-    MokoBanner* banner = moko_banner_new();
-    moko_banner_show_text( banner, string, timeout );
-    g_object_unref( banner );
+    moko_banner_show_text( moko_banner_get_instance (), string, timeout );
     g_free( string );
 }
 





More information about the commitlog mailing list