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