gpointing-device-settings r11 - trunk/src



Author: hiikezoe
Date: Thu Feb 26 07:27:40 2009
New Revision: 11
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=11&view=rev

Log:
Fix "Two different plugins tried to register 'GpdsTouchpadUI'" problem.

Modified:
   trunk/src/gpds-ui.c
   trunk/src/gpds-ui.h

Modified: trunk/src/gpds-ui.c
==============================================================================
--- trunk/src/gpds-ui.c	(original)
+++ trunk/src/gpds-ui.c	Thu Feb 26 07:27:40 2009
@@ -28,6 +28,19 @@
 #include "gpds-module.h"
 #include "gpds-xinput.h"
 
+static GList *uis = NULL;
+
+#if 0
+gboolean
+gpds_ui_quit (void)
+{
+    g_list_foreach(uis, (GFunc)gpds_module_unload, NULL);
+    g_list_free(uis);
+
+    return TRUE;
+}
+#endif
+
 typedef struct _GpdsUIPriv GpdsUIPriv;
 struct _GpdsUIPriv
 {
@@ -35,7 +48,6 @@
     GpdsXInput *xinput;
 };
 
-
 #define GPDS_UI_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), GPDS_TYPE_UI, GpdsUIPriv))
 
 G_DEFINE_ABSTRACT_TYPE(GpdsUI, gpds_ui, G_TYPE_OBJECT)
@@ -90,14 +102,17 @@
 gpds_ui_new (const gchar *name)
 {
     GpdsModule *module;
-    GObject *ui;
 
-    module = gpds_module_load_module(gpds_module_directory(), name);
-    g_return_val_if_fail(module != NULL, NULL);
+    module = gpds_module_find(uis, name);
+    if (!module)
+    {
+        module = gpds_module_load_module(gpds_module_directory(), name);
+        g_return_val_if_fail(module != NULL, NULL);
 
-    ui = gpds_module_instantiate(module);
+        uis = g_list_prepend(uis, module);
+    }
 
-    return GPDS_UI(ui);
+    return GPDS_UI(gpds_module_instantiate(module));
 }
 
 gboolean

Modified: trunk/src/gpds-ui.h
==============================================================================
--- trunk/src/gpds-ui.h	(original)
+++ trunk/src/gpds-ui.h	Thu Feb 26 07:27:40 2009
@@ -65,7 +65,6 @@
 gboolean    gpds_ui_build                (GpdsUI *ui, GError **error);
 GtkWidget  *gpds_ui_get_content_widget   (GpdsUI *ui, GError **error);
 GtkWidget  *gpds_ui_get_label_widget     (GpdsUI *ui, GError **error);
-
 GtkBuilder *gpds_ui_get_builder          (GpdsUI *ui);
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]