[gnome-settings-daemon] power: Avoid crasher if XRandR calls fail on startup



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]