[gnome-settings-daemon] power: Don't look for screens if we don't have a lid
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Don't look for screens if we don't have a lid
- Date: Wed, 17 Apr 2013 14:10:25 +0000 (UTC)
commit d491ebf6325fd1883e5fa81ee0f5daa7eb281c3b
Author: Bastien Nocera <hadess hadess net>
Date: Thu Mar 21 14:42:05 2013 +0100
power: Don't look for screens if we don't have a lid
We don't need to know about external screens being present when
we don't have any lid.
https://bugzilla.gnome.org/show_bug.cgi?id=696291
plugins/power/gsd-power-manager.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 2c8b6ed..076c52c 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -172,6 +172,7 @@ struct GsdPowerManagerPrivate
gboolean screensaver_active;
/* State */
+ gboolean lid_is_present;
gboolean lid_is_closed;
UpClient *up_client;
gchar *previous_summary;
@@ -2290,7 +2291,10 @@ up_client_changed_cb (UpClient *client, GsdPowerManager *manager)
main_battery_or_ups_low_changed (manager, FALSE);
}
- /* same state */
+ if (!manager->priv->lid_is_present)
+ return;
+
+ /* same lid state */
tmp = up_client_get_lid_is_closed (manager->priv->up_client);
if (manager->priv->lid_is_closed == tmp)
return;
@@ -3406,11 +3410,19 @@ gsd_power_manager_start (GsdPowerManager *manager,
g_debug ("Starting power manager");
gnome_settings_profile_start (NULL);
+ /* Check whether we have a lid first */
+ manager->priv->up_client = up_client_new ();
+ manager->priv->lid_is_present = up_client_get_lid_is_present (manager->priv->up_client);
+ if (manager->priv->lid_is_present)
+ manager->priv->lid_is_closed = up_client_get_lid_is_closed (manager->priv->up_client);
+
/* coldplug the list of screens */
- manager->priv->rr_screen = gnome_rr_screen_new (gdk_screen_get_default (), error);
- if (manager->priv->rr_screen == NULL) {
- g_debug ("Couldn't detect any screens, disabling plugin");
- return FALSE;
+ if (manager->priv->lid_is_present) {
+ manager->priv->rr_screen = gnome_rr_screen_new (gdk_screen_get_default (), error);
+ if (manager->priv->rr_screen == NULL) {
+ g_debug ("Lid is present and couldn't detect any screens, disabling plugin");
+ return FALSE;
+ }
}
/* Check for XTEST support */
@@ -3456,8 +3468,6 @@ gsd_power_manager_start (GsdPowerManager *manager,
g_signal_connect (manager->priv->settings_session, "changed",
G_CALLBACK (engine_settings_key_changed_cb), manager);
manager->priv->settings_xrandr = g_settings_new (GSD_XRANDR_SETTINGS_SCHEMA);
- manager->priv->up_client = up_client_new ();
- manager->priv->lid_is_closed = up_client_get_lid_is_closed (manager->priv->up_client);
g_signal_connect (manager->priv->up_client, "device-added",
G_CALLBACK (engine_device_added_cb), manager);
g_signal_connect (manager->priv->up_client, "device-removed",
@@ -3536,8 +3546,10 @@ gsd_power_manager_start (GsdPowerManager *manager,
manager->priv->idle_monitor = gnome_idle_monitor_new ();
/* set up the screens */
- g_signal_connect (manager->priv->rr_screen, "changed", G_CALLBACK (on_randr_event), manager);
- on_randr_event (manager->priv->rr_screen, manager);
+ if (manager->priv->rr_screen) {
+ g_signal_connect (manager->priv->rr_screen, "changed", G_CALLBACK (on_randr_event), manager);
+ on_randr_event (manager->priv->rr_screen, manager);
+ }
#ifdef GSD_MOCK
g_unix_signal_add (SIGUSR2, (GSourceFunc) received_sigusr2, manager);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]