From 79ece53cf59e9cda32471f6130d36f3effabc310 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 16 Oct 2016 12:47:08 +0200 Subject: [PATCH 1/2] UpKbdBacklight: Emit BrightnessChanged when brightness is changed on GetBrightness Since commit 793642bfb7("pKbdBacklight: don't cache the brightness level, always read it from sysfs attrib"), upower re-gets the actual brigthness from sysfs, to deal with hardware with "hardwired" keyboard brightness hotkeys. This commit makes upower also signal (other) users that the brightness has changed when the brightness has indeed changed underneath upower. Signed-off-by: Hans de Goede --- src/up-kbd-backlight.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/up-kbd-backlight.c b/src/up-kbd-backlight.c index 925a5ed..7b78e71 100644 --- a/src/up-kbd-backlight.c +++ b/src/up-kbd-backlight.c @@ -43,6 +43,7 @@ static void up_kbd_backlight_finalize (GObject *object); struct UpKbdBacklightPrivate { gint fd; + gint brightness; gint max_brightness; }; @@ -114,6 +115,7 @@ up_kbd_backlight_brightness_write (UpKbdBacklight *kbd_backlight, gint value) } /* emit signal */ + kbd_backlight->priv->brightness = value; up_exported_kbd_backlight_emit_brightness_changed (UP_EXPORTED_KBD_BACKLIGHT (kbd_backlight), value); @@ -139,6 +141,11 @@ up_kbd_backlight_get_brightness (UpExportedKbdBacklight *skeleton, if (brightness >= 0) { up_exported_kbd_backlight_complete_get_brightness (skeleton, invocation, brightness); + if (brightness != kbd_backlight->priv->brightness) { + kbd_backlight->priv->brightness = brightness; + up_exported_kbd_backlight_emit_brightness_changed ( + UP_EXPORTED_KBD_BACKLIGHT (kbd_backlight), brightness); + } } else { g_dbus_method_invocation_return_error (invocation, UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, @@ -261,7 +268,8 @@ up_kbd_backlight_find (UpKbdBacklight *kbd_backlight) kbd_backlight->priv->fd = open (path_now, O_RDWR); /* read brightness and check if it has an acceptable value */ - if (up_kbd_backlight_brightness_read (kbd_backlight) < 0) + kbd_backlight->priv->brightness = up_kbd_backlight_brightness_read (kbd_backlight); + if (kbd_backlight->priv->brightness < 0) goto out; /* success */ -- 2.9.3