summaryrefslogtreecommitdiff
path: root/extra/gnome-control-center/no-deprecated-upower.diff
diff options
context:
space:
mode:
Diffstat (limited to 'extra/gnome-control-center/no-deprecated-upower.diff')
-rw-r--r--extra/gnome-control-center/no-deprecated-upower.diff69
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");