incorporate fixes from Matthias Clasen in bug #430889
2007-06-22 Rodrigo Moya <rodrigo@gnome-db.org> * gnome-settings-daemon.c: incorporate fixes from Matthias Clasen in bug #430889 (gnome_settings_daemon_init): create the DBus server here. (gnome_settings_daemon_new): install an idle callback to initialize the modules. (init_modules_idle_cb): initialize modules and install an idle callback to start the modules. (start_modules_idle_cb): start modules here. (finalize): unref the DBus service. svn path=/trunk/; revision=7757
This commit is contained in:
parent
4f4291f6d4
commit
1872955fe9
2 changed files with 66 additions and 31 deletions
|
@ -1,3 +1,15 @@
|
||||||
|
2007-06-22 Rodrigo Moya <rodrigo@gnome-db.org>
|
||||||
|
|
||||||
|
* gnome-settings-daemon.c: incorporate fixes from Matthias Clasen in
|
||||||
|
bug #430889
|
||||||
|
(gnome_settings_daemon_init): create the DBus server here.
|
||||||
|
(gnome_settings_daemon_new): install an idle callback to initialize the
|
||||||
|
modules.
|
||||||
|
(init_modules_idle_cb): initialize modules and install an idle callback
|
||||||
|
to start the modules.
|
||||||
|
(start_modules_idle_cb): start modules here.
|
||||||
|
(finalize): unref the DBus service.
|
||||||
|
|
||||||
2007-06-21 Rodrigo Moya <rodrigo@gnome-db.org>
|
2007-06-21 Rodrigo Moya <rodrigo@gnome-db.org>
|
||||||
|
|
||||||
* gnome-settings-accessibility-keyboard.c:
|
* gnome-settings-accessibility-keyboard.c:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2001 Red Hat, Inc.
|
* Copyright © 2001, 2007 Red Hat, Inc.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* Authors: Owen Taylor, Havoc Pennington
|
* Authors: Owen Taylor, Havoc Pennington, Ray Strode, Rodrigo Moya
|
||||||
*/
|
*/
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
struct _GnomeSettingsDaemonPrivate {
|
struct _GnomeSettingsDaemonPrivate {
|
||||||
GHashTable *loaded_modules;
|
GHashTable *loaded_modules;
|
||||||
|
GObject *dbus_service;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gnome_settings_module_accessibility_keyboard_get_type (void);
|
GType gnome_settings_module_accessibility_keyboard_get_type (void);
|
||||||
|
@ -54,7 +55,7 @@ GType gnome_settings_module_typing_break_get_type (void);
|
||||||
GType gnome_settings_module_xrdb_get_type (void);
|
GType gnome_settings_module_xrdb_get_type (void);
|
||||||
GType gnome_settings_module_xsettings_get_type (void);
|
GType gnome_settings_module_xsettings_get_type (void);
|
||||||
|
|
||||||
static GObjectClass *parent_class = NULL;
|
static GObject *parent_class = NULL;
|
||||||
XSettingsManager **managers = NULL;
|
XSettingsManager **managers = NULL;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -156,6 +157,7 @@ finalize (GObject *object)
|
||||||
daemon->priv->loaded_modules = NULL;
|
daemon->priv->loaded_modules = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_object_unref (daemon->priv->dbus_service);
|
||||||
g_free (daemon->priv);
|
g_free (daemon->priv);
|
||||||
daemon->priv = NULL;
|
daemon->priv = NULL;
|
||||||
|
|
||||||
|
@ -230,18 +232,64 @@ gnome_settings_daemon_init (GnomeSettingsDaemon *settings)
|
||||||
|
|
||||||
g_free (module_types);
|
g_free (module_types);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create DBus server */
|
||||||
|
settings->priv->dbus_service = g_object_new (gnome_settings_server_get_type (), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
G_DEFINE_TYPE (GnomeSettingsDaemon, gnome_settings_daemon, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (GnomeSettingsDaemon, gnome_settings_daemon, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
start_modules_idle_cb (gpointer user_data)
|
||||||
|
{
|
||||||
|
GnomeSettingsDaemon *daemon = user_data;
|
||||||
|
|
||||||
|
/* start all modules */
|
||||||
|
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
|
||||||
|
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
|
||||||
|
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
|
||||||
|
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
init_modules_idle_cb (gpointer user_data)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int n_screens;
|
||||||
|
GdkDisplay *display;
|
||||||
|
GnomeSettingsDaemon *daemon = user_data;
|
||||||
|
|
||||||
|
display = gdk_display_get_default ();
|
||||||
|
n_screens = gdk_display_get_n_screens (display);
|
||||||
|
|
||||||
|
/* load all modules */
|
||||||
|
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
|
||||||
|
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
|
||||||
|
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
|
||||||
|
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
|
||||||
|
|
||||||
|
for (i = 0; i < n_screens; i++) {
|
||||||
|
GdkScreen *screen;
|
||||||
|
|
||||||
|
screen = gdk_display_get_screen (display, i);
|
||||||
|
gdk_window_add_filter (
|
||||||
|
gdk_screen_get_root_window (screen),
|
||||||
|
manager_event_filter, GINT_TO_POINTER (i));
|
||||||
|
}
|
||||||
|
|
||||||
|
g_idle_add ((GSourceFunc) start_modules_idle_cb, daemon);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
GObject *
|
GObject *
|
||||||
gnome_settings_daemon_new (void)
|
gnome_settings_daemon_new (void)
|
||||||
{
|
{
|
||||||
gboolean terminated = FALSE;
|
gboolean terminated = FALSE;
|
||||||
GConfClient *client;
|
|
||||||
GnomeSettingsDaemon *daemon;
|
GnomeSettingsDaemon *daemon;
|
||||||
GdkDisplay *display;
|
GdkDisplay *display;
|
||||||
GObject *dbusServer;
|
|
||||||
int i;
|
int i;
|
||||||
int n_screens;
|
int n_screens;
|
||||||
|
|
||||||
|
@ -257,7 +305,6 @@ gnome_settings_daemon_new (void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!terminated) {
|
if (!terminated) {
|
||||||
managers = g_new (XSettingsManager *, n_screens + 1);
|
managers = g_new (XSettingsManager *, n_screens + 1);
|
||||||
|
|
||||||
|
@ -280,31 +327,7 @@ gnome_settings_daemon_new (void)
|
||||||
managers [i] = NULL;
|
managers [i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
client = gnome_settings_get_config_client ();
|
g_idle_add ((GSourceFunc) init_modules_idle_cb, daemon);
|
||||||
|
|
||||||
/* load all modules */
|
|
||||||
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
|
|
||||||
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
|
|
||||||
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
|
|
||||||
initialize_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
|
|
||||||
|
|
||||||
for (i = 0; i < n_screens; i++) {
|
|
||||||
GdkScreen *screen;
|
|
||||||
|
|
||||||
screen = gdk_display_get_screen (display, i);
|
|
||||||
gdk_window_add_filter (
|
|
||||||
gdk_screen_get_root_window (screen),
|
|
||||||
manager_event_filter, GINT_TO_POINTER (i));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* start all modules */
|
|
||||||
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_XSETTINGS);
|
|
||||||
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_GNOME_SETTINGS);
|
|
||||||
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_CORE_SERVICES);
|
|
||||||
start_modules (daemon, GNOME_SETTINGS_MODULE_RUNLEVEL_SERVICES);
|
|
||||||
|
|
||||||
/* create DBus server */
|
|
||||||
dbusServer = g_object_new (gnome_settings_server_get_type (), NULL);
|
|
||||||
|
|
||||||
return G_OBJECT (daemon);
|
return G_OBJECT (daemon);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue