File gnome-control-center-fix-screen-brightness.patch of Package gnome-control-center
From 570478bcae6c872a4903118fdae25cb72cb5a027 Mon Sep 17 00:00:00 2001
From: Giovanni Campagna <gcampagna@src.gnome.org>
Date: Fri, 08 Jun 2012 21:01:10 +0000
Subject: screen: Fix for gnome-settings-daemon changes
g-s-d changed its DBus interface, and that made all
external changes to brightness invisible to the panel. Update
accordingly.
https://bugzilla.gnome.org/show_bug.cgi?id=662117
---
Index: gnome-control-center-3.4.2/panels/screen/cc-screen-panel.c
===================================================================
--- gnome-control-center-3.4.2.orig/panels/screen/cc-screen-panel.c
+++ gnome-control-center-3.4.2/panels/screen/cc-screen-panel.c
@@ -169,33 +169,6 @@ cc_screen_panel_class_finalize (CcScreen
}
static void
-on_signal (GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
-{
- CcScreenPanel *self = CC_SCREEN_PANEL (user_data);
-
- if (g_strcmp0 (signal_name, "BrightnessChanged") == 0)
- {
- guint brightness;
- GtkRange *range;
-
- /* changed, but ignoring */
- if (self->priv->setting_brightness)
- return;
-
- /* update the bar */
- g_variant_get (parameters,
- "(u)",
- &brightness);
- range = GTK_RANGE (WID ("screen_brightness_hscale"));
- gtk_range_set_value (range, brightness);
- }
-}
-
-static void
set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
@@ -276,6 +249,34 @@ get_brightness_cb (GObject *source_objec
}
static void
+on_signal (GDBusProxy *proxy,
+ gchar *sender_name,
+ gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
+{
+ CcScreenPanel *self = CC_SCREEN_PANEL (user_data);
+
+ if (g_strcmp0 (signal_name, "Changed") == 0)
+ {
+ /* changed, but ignoring */
+ if (self->priv->setting_brightness)
+ return;
+
+ /* retrieve the value again from g-s-d */
+ g_dbus_proxy_call (self->priv->proxy,
+ "GetPercentage",
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ 200, /* we don't want to randomly move the bar */
+ self->priv->cancellable,
+ get_brightness_cb,
+ user_data);
+ }
+}
+
+
+static void
got_power_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;