[gnome-settings-daemon] power: Monitor org.freedesktop.UPower.KbdBacklight.BrightnessChangedWithSource signal
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Monitor org.freedesktop.UPower.KbdBacklight.BrightnessChangedWithSource signal
- Date: Thu, 25 May 2017 13:48:43 +0000 (UTC)
commit 47c6a077b6d611433f1151b81f97bce9b178e3cf
Author: Hans de Goede <hdegoede redhat com>
Date: Sat Oct 15 17:25:39 2016 +0200
power: Monitor org.freedesktop.UPower.KbdBacklight.BrightnessChangedWithSource signal
Monitor org.freedesktop.UPower.KbdBacklight.BrightnessChangedWithSource signal.
Along with kernel[1] and upower[2] changes, this will make the slider in the
Power Settings panel respond to brightness changes caused by pressing
backlight buttons that change the brightness directly.
[1] https://patchwork.kernel.org/patch/9544111/
[2] https://bugs.freedesktop.org/show_bug.cgi?id=98404
https://bugzilla.gnome.org/show_bug.cgi?id=773403
plugins/power/gsd-power-manager.c | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index f6d32b6..6e6b945 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -1461,6 +1461,35 @@ kbd_backlight_dim (GsdPowerManager *manager,
return TRUE;
}
+static void
+upower_kbd_proxy_signal_cb (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
+{
+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
+ gint brightness, percentage;
+ const gchar *source;
+
+ if (g_strcmp0 (signal_name, "BrightnessChangedWithSource") != 0)
+ return;
+
+ g_variant_get (parameters, "(i&s)", &brightness, &source);
+
+ /* Ignore changes caused by us calling UPower's SetBrightness method,
+ * we already call backlight_iface_emit_changed for these after the
+ * SetBrightness method call completes. */
+ if (g_strcmp0 (source, "external") == 0)
+ return;
+
+ manager->priv->kbd_brightness_now = brightness;
+ percentage = ABS_TO_PERCENTAGE (0,
+ manager->priv->kbd_brightness_max,
+ manager->priv->kbd_brightness_now);
+ backlight_iface_emit_changed (manager, GSD_POWER_DBUS_INTERFACE_KEYBOARD, percentage);
+}
+
static gboolean
is_session_active (GsdPowerManager *manager)
{
@@ -1962,6 +1991,10 @@ power_keyboard_proxy_ready_cb (GObject *source_object,
goto out;
}
+ g_signal_connect (manager->priv->upower_kbd_proxy, "g-signal",
+ G_CALLBACK (upower_kbd_proxy_signal_cb),
+ manager);
+
k_now = g_dbus_proxy_call_sync (manager->priv->upower_kbd_proxy,
"GetBrightness",
NULL,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]