[gnome-settings-daemon] power: Avoid crasher if XRandR calls fail on startup
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Avoid crasher if XRandR calls fail on startup
- Date: Wed, 5 Dec 2012 13:16:36 +0000 (UTC)
commit af318984048f86796f4899d22d5acf49c0365e9f
Author: Richard Hughes <richard hughsie com>
Date: Wed Dec 5 14:11:53 2012 +0100
power: Avoid crasher if XRandR calls fail on startup
In between a start()/stop() pairing, if gnome_rr_screen_new()
somehow returns NULL, exit the start() function earlier, before
anything is set up. This helps avoid a crash where the x11_screen
could be used by just-set-up signals.
https://bugzilla.gnome.org/show_bug.cgi?id=672245
Conflicts:
plugins/power/gsd-power-manager.c
plugins/power/gsd-power-manager.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 2f9f596..f19f912 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -3942,6 +3942,12 @@ gsd_power_manager_start (GsdPowerManager *manager,
g_debug ("Starting power manager");
gnome_settings_profile_start (NULL);
+ /* coldplug the list of screens */
+ manager->priv->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error);
+ if (manager->priv->x11_screen == NULL)
+ return FALSE;
+
+ /* Set up the logind proxy */
manager->priv->logind_proxy =
g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
0,
@@ -4071,12 +4077,8 @@ gsd_power_manager_start (GsdPowerManager *manager,
g_signal_connect (manager->priv->idle_monitor, "triggered-idle",
G_CALLBACK (idle_triggered_idle_cb), manager);
- /* coldplug the list of screens */
- manager->priv->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error);
- if (manager->priv->x11_screen == NULL)
- return FALSE;
+ /* set up the screens */
g_signal_connect (manager->priv->x11_screen, "changed", G_CALLBACK (on_randr_event), manager);
- /* set up initial state */
on_randr_event (manager->priv->x11_screen, manager);
/* ensure the default dpms timeouts are cleared */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]