diff options
Diffstat (limited to 'extra/gnome-control-center/no-deprecated-upower.diff')
-rw-r--r-- | extra/gnome-control-center/no-deprecated-upower.diff | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/extra/gnome-control-center/no-deprecated-upower.diff b/extra/gnome-control-center/no-deprecated-upower.diff new file mode 100644 index 000000000..4fa629855 --- /dev/null +++ b/extra/gnome-control-center/no-deprecated-upower.diff @@ -0,0 +1,69 @@ +diff --git c/panels/power/cc-power-panel.c i/panels/power/cc-power-panel.c +index d70496a..af71db9 100644 +--- c/panels/power/cc-power-panel.c ++++ i/panels/power/cc-power-panel.c +@@ -70,6 +70,7 @@ struct _CcPowerPanelPrivate + GCancellable *cancellable; + GtkBuilder *builder; + UpClient *up_client; ++ GDBusProxy *logind_proxy; + GDBusProxy *screen_proxy; + gboolean has_batteries; + +@@ -137,6 +138,7 @@ cc_power_panel_dispose (GObject *object) + } + g_clear_object (&priv->builder); + g_clear_object (&priv->screen_proxy); ++ g_clear_object (&priv->logind_proxy); + g_clear_object (&priv->up_client); + #ifdef HAVE_BLUETOOTH + g_clear_object (&priv->bt_client); +@@ -1737,6 +1739,7 @@ add_automatic_suspend_section (CcPowerPanel *self) + GtkWidget *dialog; + GtkWidget *combo; + GtkCellRenderer *cell; ++ GVariant *result; + + /* The default values for these settings are unfortunate for us; + * timeout == 0, action == suspend means 'do nothing' - just +@@ -1820,7 +1823,23 @@ add_automatic_suspend_section (CcPowerPanel *self) + gtk_widget_set_margin_bottom (label, 6); + gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0); + +- if (up_client_get_can_hibernate (self->priv->up_client)) ++ value = 0; ++ result = g_dbus_proxy_call_sync (self->priv->logind_proxy, ++ "CanHibernate", ++ NULL, ++ G_DBUS_CALL_FLAGS_NONE, ++ -1, ++ NULL, ++ NULL); ++ if (result) ++ { ++ g_variant_get (result, "(s)", &s); ++ if (g_strcmp0 (s, "yes") == 0) ++ value = 1; ++ g_variant_unref(result); ++ } ++ ++ if (value) + { + model = (GtkTreeModel*)gtk_builder_get_object (priv->builder, "liststore_critical"); + priv->critical_battery_combo = sw = gtk_combo_box_new_with_model (model); +@@ -2070,6 +2089,15 @@ cc_power_panel_init (CcPowerPanel *self) + got_screen_proxy_cb, + self); + ++ priv->logind_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, ++ G_DBUS_PROXY_FLAGS_NONE, ++ NULL, ++ "org.freedesktop.login1", ++ "/org/freedesktop/login1", ++ "org.freedesktop.login1.Manager", ++ NULL, ++ &error); ++ + priv->up_client = up_client_new (); + + priv->gsd_settings = g_settings_new ("org.gnome.settings-daemon.plugins.power"); |