summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2022-03-22 16:39:16 +0100
committerBenjamin Berg <bberg@redhat.com>2022-03-23 15:39:20 +0100
commit9cac01e9e1d48a82eca3f1f68486e9b0e6f94588 (patch)
tree59bc1daad77495596622476ef5d849b2b3c69a8c
parent15dc11c7b432f28679ccc7b09161b233d614dec7 (diff)
downloadgnome-settings-daemon-9cac01e9e1d48a82eca3f1f68486e9b0e6f94588.tar.gz
power: Wait for systemd SetBrightness call to complete
This isn't really needed, but allows the test-suite to run without races and needing explicit sleeps.
-rw-r--r--plugins/power/gsd-backlight.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
index ca5f2723..8aca2c6c 100644
--- a/plugins/power/gsd-backlight.c
+++ b/plugins/power/gsd-backlight.c
@@ -459,6 +459,30 @@ gsd_backlight_get_brightness (GsdBacklight *backlight, gint *target)
return ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_val);
}
+#ifdef __linux__
+static void
+logind_set_brightness_cb (GObject *obj, GAsyncResult *res, gpointer user_data)
+{
+ GsdBacklight *backlight;
+ g_autoptr(GTask) task = user_data;
+ g_autoptr(GVariant) r = NULL;
+ g_autoptr(GError) error = NULL;
+ gint percent;
+
+ r = g_dbus_proxy_call_finish (G_DBUS_PROXY (obj), res, &error);
+
+ backlight = g_task_get_source_object (task);
+ percent = ABS_TO_PERCENTAGE (backlight->brightness_min,
+ backlight->brightness_max,
+ backlight->brightness_target);
+
+ if (error)
+ g_task_return_error (task, error);
+ else
+ g_task_return_int (task, percent);
+}
+#endif
+
static void
gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
int value,
@@ -491,7 +515,7 @@ gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
backlight->brightness_target),
G_DBUS_CALL_FLAGS_NONE,
-1, NULL,
- NULL, NULL);
+ logind_set_brightness_cb, g_steal_pointer (&task));
percent = ABS_TO_PERCENTAGE (backlight->brightness_min,
backlight->brightness_max,