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