diff options
author | Rasmus Thomsen <oss@cogitri.dev> | 2020-03-11 22:36:08 +0100 |
---|---|---|
committer | Rasmus Thomsen <oss@cogitri.dev> | 2020-03-12 13:41:47 +0100 |
commit | 3f6c92f568824f666c0b84a8a9fe10761af4cd93 (patch) | |
tree | 54d9e3da23ffe91bc692516892de3e228b2654bc /community/gnome-settings-daemon | |
parent | 6e80953ef75f92d75d44a3a9a1a546668befd92b (diff) | |
download | aports-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/APKBUILD | 8 | ||||
-rw-r--r-- | community/gnome-settings-daemon/dont-use-logind-for-brightness-changing.patch | 121 |
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) { |