aboutsummaryrefslogtreecommitdiffstats
path: root/community/gnome-settings-daemon
diff options
context:
space:
mode:
authorRasmus Thomsen <oss@cogitri.dev>2020-03-11 22:36:08 +0100
committerRasmus Thomsen <oss@cogitri.dev>2020-03-12 13:41:47 +0100
commit3f6c92f568824f666c0b84a8a9fe10761af4cd93 (patch)
tree54d9e3da23ffe91bc692516892de3e228b2654bc /community/gnome-settings-daemon
parent6e80953ef75f92d75d44a3a9a1a546668befd92b (diff)
downloadaports-3f6c92f568824f666c0b84a8a9fe10761af4cd93.tar.bz2
aports-3f6c92f568824f666c0b84a8a9fe10761af4cd93.tar.xz
community/gnome-settings-daemon: don't use logind for brightness control
Apparently that is broken on elogind. See https://github.com/elogind/elogind/issues/158
Diffstat (limited to 'community/gnome-settings-daemon')
-rw-r--r--community/gnome-settings-daemon/APKBUILD8
-rw-r--r--community/gnome-settings-daemon/dont-use-logind-for-brightness-changing.patch121
2 files changed, 126 insertions, 3 deletions
diff --git a/community/gnome-settings-daemon/APKBUILD b/community/gnome-settings-daemon/APKBUILD
index df98e425ee..2e63e9e22c 100644
--- a/community/gnome-settings-daemon/APKBUILD
+++ b/community/gnome-settings-daemon/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Rasmus Thomsen <oss@cogitri.dev>
pkgname=gnome-settings-daemon
pkgver=3.36.0
-pkgrel=0
+pkgrel=1
pkgdesc="GNOME settings daemon"
url="https://gitlab.gnome.org/GNOME/gnome-settings-daemon"
arch="all !s390x"
@@ -19,7 +19,8 @@ makedepends="$depends_dev libxml2-utils meson"
checkdepends="py3-gobject3"
depends="pulseaudio"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.gnome.org/sources/gnome-settings-daemon/${pkgver%.*}/gnome-settings-daemon-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/gnome-settings-daemon/${pkgver%.*}/gnome-settings-daemon-$pkgver.tar.xz
+ dont-use-logind-for-brightness-changing.patch"
build() {
meson \
@@ -36,4 +37,5 @@ package() {
DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="5268f1b3207bf804daea97fa8480225ebef2457072521a0e861259fc2eca8c99d02ce65ce3b50c42239e515931d2f4747b205c48894c135552f08b549df3735c gnome-settings-daemon-3.36.0.tar.xz"
+sha512sums="5268f1b3207bf804daea97fa8480225ebef2457072521a0e861259fc2eca8c99d02ce65ce3b50c42239e515931d2f4747b205c48894c135552f08b549df3735c gnome-settings-daemon-3.36.0.tar.xz
+b5e58ac820d6cc66366d39d6a69f374a4734437317b8a491fdae25a2cb68b8aaf5e3bd9e73b8110768441bdb38d747692829cf1b05dfc84835d726273044c5b8 dont-use-logind-for-brightness-changing.patch"
diff --git a/community/gnome-settings-daemon/dont-use-logind-for-brightness-changing.patch b/community/gnome-settings-daemon/dont-use-logind-for-brightness-changing.patch
new file mode 100644
index 0000000000..a05266763c
--- /dev/null
+++ b/community/gnome-settings-daemon/dont-use-logind-for-brightness-changing.patch
@@ -0,0 +1,121 @@
+Upstream introduced brightness level changing with
+https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/cd051e6c7ccfb7e7b0ec440409c559b2e51284e8
+but apparently this doesn't work with elogind (see https://github.com/elogind/elogind/issues/158),
+so let's revert this for now and keep using the old mechanism.
+diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
+index 9f406c9..9c872f8 100644
+--- a/plugins/power/gsd-backlight.c
++++ b/plugins/power/gsd-backlight.c
+@@ -40,8 +40,6 @@ struct _GsdBacklight
+ gint brightness_step;
+
+ #ifdef __linux__
+- GDBusProxy *logind_proxy;
+-
+ GUdevClient *udev;
+ GUdevDevice *udev_device;
+
+@@ -61,10 +59,6 @@ enum {
+ PROP_LAST,
+ };
+
+-#define SYSTEMD_DBUS_NAME "org.freedesktop.login1"
+-#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1/session/auto"
+-#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Session"
+-
+ static GParamSpec *props[PROP_LAST];
+
+ static void gsd_backlight_initable_iface_init (GInitableIface *iface);
+@@ -481,31 +475,13 @@ gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
+ #ifdef __linux__
+ if (backlight->udev_device != NULL) {
+ BacklightHelperData *task_data;
++ task_data = g_new0 (BacklightHelperData, 1);
++ task_data->value = backlight->brightness_target;
++ g_task_set_task_data (task, task_data, backlight_task_data_destroy);
+
+- if (backlight->logind_proxy) {
+- g_dbus_proxy_call (backlight->logind_proxy,
+- "SetBrightness",
+- g_variant_new ("(ssu)",
+- "backlight",
+- g_udev_device_get_name (backlight->udev_device),
+- backlight->brightness_target),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, NULL,
+- NULL, NULL);
+-
+- percent = ABS_TO_PERCENTAGE (backlight->brightness_min,
+- backlight->brightness_max,
+- backlight->brightness_target);
+- g_task_return_int (task, percent);
+- } else {
+- task_data = g_new0 (BacklightHelperData, 1);
+- task_data->value = backlight->brightness_target;
+- g_task_set_task_data (task, task_data, backlight_task_data_destroy);
+-
+- /* Task is set up now. Queue it and ensure we are working something. */
+- g_queue_push_tail (&backlight->tasks, task);
+- gsd_backlight_process_taskqueue (backlight);
+- }
++ /* Task is set up now. Queue it and ensure we are working something. */
++ g_queue_push_tail (&backlight->tasks, task);
++ gsd_backlight_process_taskqueue (backlight);
+
+ return;
+ }
+@@ -823,7 +799,6 @@ gsd_backlight_initable_init (GInitable *initable,
+ {
+ GsdBacklight *backlight = GSD_BACKLIGHT (initable);
+ GnomeRROutput* output = NULL;
+- GError *logind_error = NULL;
+
+ if (cancellable != NULL) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+@@ -832,38 +807,6 @@ gsd_backlight_initable_init (GInitable *initable,
+ }
+
+ #ifdef __linux__
+- backlight->logind_proxy =
+- g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+- 0,
+- NULL,
+- SYSTEMD_DBUS_NAME,
+- SYSTEMD_DBUS_PATH,
+- SYSTEMD_DBUS_INTERFACE,
+- NULL, &logind_error);
+- if (backlight->logind_proxy) {
+- /* Check that the SetBrightness method does exist */
+- g_dbus_proxy_call_sync (backlight->logind_proxy,
+- "SetBrightness", NULL,
+- G_DBUS_CALL_FLAGS_NONE, -1,
+- NULL, &logind_error);
+-
+- if (g_error_matches (logind_error, G_DBUS_ERROR,
+- G_DBUS_ERROR_INVALID_ARGS)) {
+- /* We are calling the method with no arguments, so
+- * this is expected.
+- */
+- g_clear_error (&logind_error);
+- } else {
+- /* Fail on anything else */
+- g_clear_object (&backlight->logind_proxy);
+- }
+- }
+-
+- if (logind_error) {
+- g_warning ("No logind found: %s", logind_error->message);
+- g_error_free (logind_error);
+- }
+-
+ /* Try finding a udev device. */
+ if (gsd_backlight_udev_init (backlight))
+ goto found;
+@@ -905,7 +848,6 @@ gsd_backlight_finalize (GObject *object)
+ #ifdef __linux__
+ g_assert (backlight->active_task == NULL);
+ g_assert (g_queue_is_empty (&backlight->tasks));
+- g_clear_object (&backlight->logind_proxy);
+ g_clear_object (&backlight->udev);
+ g_clear_object (&backlight->udev_device);
+ if (backlight->idle_update) {