[gnome-settings-daemon] xrandr: Register our DBus API only after all other initialization
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] xrandr: Register our DBus API only after all other initialization
- Date: Wed, 19 Nov 2014 16:13:21 +0000 (UTC)
commit 26f984fff17884b549dfa56786617b80483783e8
Author: Rui Matos <tiagomatos gmail com>
Date: Fri Nov 14 23:27:54 2014 +0100
xrandr: Register our DBus API only after all other initialization
Otherwise we risk being called and not have all out internal state
ready (e.g. priv->rw_screen being NULL) leading to crashes.
We also need to disown our well known name on stop() since we'll
reaquire it if start() gets called again.
https://bugzilla.gnome.org/show_bug.cgi?id=740151
plugins/xrandr/gsd-xrandr-manager.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c
index 007beab..67b3ed1 100644
--- a/plugins/xrandr/gsd-xrandr-manager.c
+++ b/plugins/xrandr/gsd-xrandr-manager.c
@@ -129,6 +129,7 @@ static void get_allowed_rotations_for_output (GnomeRRConfig *config,
GnomeRRRotation *out_rotations);
static void handle_fn_f7 (GsdXrandrManager *mgr, gint64 timestamp);
static void handle_rotate_windows (GsdXrandrManager *mgr, GnomeRRRotation rotation, gint64 timestamp);
+static void register_manager_dbus (GsdXrandrManager *manager);
G_DEFINE_TYPE (GsdXrandrManager, gsd_xrandr_manager, G_TYPE_OBJECT)
@@ -1232,6 +1233,7 @@ on_rr_screen_acquired (GObject *object,
manager->priv->settings = g_settings_new (CONF_SCHEMA);
manager_init_devices (manager);
+ register_manager_dbus (manager);
log_close ();
}
@@ -1283,6 +1285,9 @@ gsd_xrandr_manager_stop (GsdXrandrManager *manager)
manager->priv->upower_client = NULL;
}
+ if (manager->priv->name_id != 0)
+ g_bus_unown_name (manager->priv->name_id);
+
if (manager->priv->introspection_data) {
g_dbus_node_info_unref (manager->priv->introspection_data);
manager->priv->introspection_data = NULL;
@@ -1341,9 +1346,6 @@ gsd_xrandr_manager_finalize (GObject *object)
gsd_xrandr_manager_stop (manager);
- if (manager->priv->name_id != 0)
- g_bus_unown_name (manager->priv->name_id);
-
G_OBJECT_CLASS (gsd_xrandr_manager_parent_class)->finalize (object);
}
@@ -1462,8 +1464,6 @@ gsd_xrandr_manager_new (void)
manager_object = g_object_new (GSD_TYPE_XRANDR_MANAGER, NULL);
g_object_add_weak_pointer (manager_object,
(gpointer *) &manager_object);
-
- register_manager_dbus (manager_object);
}
return GSD_XRANDR_MANAGER (manager_object);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]