rpms/control-center/devel loaded-modules.patch, NONE, 1.1 control-center.spec, 1.274, 1.275

Matthias Clasen (mclasen) fedora-extras-commits at redhat.com
Wed Jun 20 01:34:56 UTC 2007


Author: mclasen

Update of /cvs/extras/rpms/control-center/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17657

Modified Files:
	control-center.spec 
Added Files:
	loaded-modules.patch 
Log Message:
Fix new module handling code


loaded-modules.patch:

--- NEW FILE loaded-modules.patch ---
--- gnome-control-center-2.19.4/gnome-settings-daemon/gnome-settings-daemon.c.loaded-modules	2007-06-19 21:15:12.000000000 -0400
+++ gnome-control-center-2.19.4/gnome-settings-daemon/gnome-settings-daemon.c	2007-06-19 21:17:18.000000000 -0400
@@ -44,7 +44,7 @@
 #include "gnome-settings-xrdb.h"
 
 struct _GnomeSettingsDaemonPrivate {
-	GHashTable *loaded_modules;
+	GList *loaded_modules[GNOME_SETTINGS_MODULE_RUNLEVEL_NONE];
 };
 
 GType gnome_settings_module_background_get_type (void);
@@ -106,52 +106,44 @@ manager_event_filter (GdkXEvent *xevent,
 }
 
 static void
-free_modules_list (gpointer data)
-{
-	GList *l = (GList *) data;
-
-	while (l) {
-		g_object_unref (G_OBJECT (l->data));
-		l = g_list_remove (l, l);
-	}
-}
-
-static void
 initialize_modules (GnomeSettingsDaemon *daemon, GnomeSettingsModuleRunlevel runlevel)
 {
-	GList *l, *module_list;
+	GList *l;
 	GConfClient *client;
 
 	client = gnome_settings_get_config_client ();
 
-	module_list = g_hash_table_lookup (daemon->priv->loaded_modules, &runlevel);
-	for (l = module_list; l != NULL; l = l->next) {
-		
+	for (l = daemon->priv->loaded_modules[runlevel]; l != NULL; l = l->next) 
 		gnome_settings_module_initialize (GNOME_SETTINGS_MODULE (l->data), client);
-	}
 }
 
 static void
 start_modules (GnomeSettingsDaemon *daemon, GnomeSettingsModuleRunlevel runlevel)
 {
-	GList *l, *module_list;
+	GList *l;
 
-	module_list = g_hash_table_lookup (daemon->priv->loaded_modules, &runlevel);
-	for (l = module_list; l != NULL; l = l->next)
+	for (l = daemon->priv->loaded_modules[runlevel]; l != NULL; l = l->next) 
 		gnome_settings_module_start (GNOME_SETTINGS_MODULE (l->data));
 }
 
 static void
 stop_modules (GnomeSettingsDaemon *daemon, GnomeSettingsModuleRunlevel runlevel)
 {
-	GList *l, *module_list;
+	GList *l;
 
-	module_list = g_hash_table_lookup (daemon->priv->loaded_modules, &runlevel);
-	for (l = module_list; l != NULL; l = l->next)
+	for (l = daemon->priv->loaded_modules[runlevel]; l != NULL; l = l->next) 
 		gnome_settings_module_stop (GNOME_SETTINGS_MODULE (l->data));
 }
 
 static void
+unload_modules (GnomeSettingsDaemon *daemon, GnomeSettingsModuleRunlevel runlevel)
+{
+	g_list_foreach (daemon->priv->loaded_modules[runlevel], g_object_unref, NULL);
+	g_list_free (daemon->priv->loaded_modules[runlevel]);
+	daemon->priv->loaded_modules[runlevel] = NULL;
+}
+
+static void
 finalize (GObject *object)
 {
 	GnomeSettingsDaemon *daemon;
@@ -164,16 +156,16 @@ finalize (GObject *object)
 	for (i = 0; managers && managers [i]; i++)
 		xsettings_manager_destroy (managers [i]);
 
-	if (daemon->priv->loaded_modules) {
-		/* call _stop method on modules, in runlevel-descending order */
-		stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
-		stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
-		stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
-		stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
-
-		g_hash_table_destroy (daemon->priv->loaded_modules);
-		daemon->priv->loaded_modules = NULL;
-	}
+	/* call _stop method on modules, in runlevel-descending order */
+	stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
+	stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
+	stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
+	stop_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
+
+	unload_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
+	unload_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
+	unload_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
+	unload_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
 
 	g_free (daemon->priv);
 	daemon->priv = NULL;
@@ -198,8 +190,9 @@ gnome_settings_daemon_init (GnomeSetting
 {
 	GType *module_types;
 	guint n_children;
+	gint runlevel;
 
-	settings->priv = g_new (GnomeSettingsDaemonPrivate, 1);
+	settings->priv = g_new0 (GnomeSettingsDaemonPrivate, 1);
 
 	/* register all internal modules types */
 	if (!gnome_settings_module_background_get_type ()
@@ -214,30 +207,19 @@ gnome_settings_daemon_init (GnomeSetting
 	    || !gnome_settings_module_xsettings_get_type ())
 		return;
 
-	/* create hash table for loaded modules */
-	settings->priv->loaded_modules = g_hash_table_new_full (g_int_hash, g_int_equal, NULL, free_modules_list);
-
 	module_types = g_type_children (GNOME_SETTINGS_TYPE_MODULE, &n_children);
 	if (module_types) {
 		guint i;
 
 		for (i = 0; i < n_children; i++) {
 			GObject *module;
-			GnomeSettingsModuleRunlevel runlevel;
-			GList *module_list;
 
 			module = g_object_new (module_types[i], NULL);
 			if (!module)
 				continue;
 
 			runlevel = gnome_settings_module_get_runlevel (GNOME_SETTINGS_MODULE (module));
-			module_list = g_hash_table_lookup (settings->priv->loaded_modules, &runlevel);
-			if (module_list)
-				module_list = g_list_append (module_list, module);
-			else {
-				module_list = g_list_append (NULL, module);
-				g_hash_table_insert (settings->priv->loaded_modules, &runlevel, module_list);
-			}
+                        settings->priv->loaded_modules[runlevel] = g_list_append (settings->priv->loaded_modules[runlevel], module);
 		}
 
 		g_free (module_types);


Index: control-center.spec
===================================================================
RCS file: /cvs/extras/rpms/control-center/devel/control-center.spec,v
retrieving revision 1.274
retrieving revision 1.275
diff -u -r1.274 -r1.275
--- control-center.spec	18 Jun 2007 23:05:17 -0000	1.274
+++ control-center.spec	20 Jun 2007 01:34:21 -0000	1.275
@@ -22,12 +22,15 @@
 Summary: GNOME Control Center
 Name: control-center
 Version: 2.19.4
-Release: 1%{?dist}
+Release: 2%{?dist}
 Epoch: 1
 License: GPL/LGPL
 Group: User Interface/Desktops
 Source: http://download.gnome.org/sources/gnome-control-center/2.19/gnome-control-center-%{version}.tar.bz2
 
+# http://bugzilla.gnome.org/show_bug.cgi?id=449118
+Patch0: loaded-modules.patch
+
 # Remove "Apply" button and just have "Close" instead
 # FIXME: figure out how this applies to the new appearance capplet
 #Patch1: control-center-2.15.4-finish.patch
@@ -166,6 +169,7 @@
 %prep
 %setup -q -n gnome-control-center-%{version}
 
+%patch0 -p1 -b .loaded-modules
 #%patch1 -p1 -b .finish
 %patch2 -p1 -b .search
 %patch3 -p1 -b .about-me-help
@@ -331,6 +335,9 @@
 %{_libdir}/pkgconfig/*
 
 %changelog
+* Tue Jun 19 2007 Matthias Clasen <mclasen at redhat.com> - 2.19.4-2
+- Fix up the new module handling in gnome-settings-daemon
+
 * Mon Jun 18 2007 Matthias Clasen <mclasen at redhat.com> - 2.19.4-1
 - Update to 2.19.4
 




More information about the fedora-extras-commits mailing list