You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/x11-misc/light-locker/files/light-locker-1.9.0-elogind....

288 lines
9.5 KiB

From 0b5dbd25a21a16b93c371fd892b910969e4b2d58 Mon Sep 17 00:00:00 2001
From: Robert Dyer <robert.dyer@sony.com>
Date: Mon, 3 Jun 2019 22:17:08 -0500
Subject: [PATCH] fix-up light-locker-1.9.0-elogind.patch
---
README.md | 2 ++
configure.ac.in | 39 ++++++++++++++++++++++++++++++++++++++-
src/Makefile.am | 4 +++-
src/gs-listener-dbus.c | 32 +++++++++++++++++---------------
src/light-locker.c | 6 ++++++
5 files changed, 66 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 86b66d0..b093a4f 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,8 @@ Here is a list of the different dependencies and their configuration flags:
--with-systemd: This adds the support for systemd logind. This option requires the development files to be installed.
+ --with-elogind: This adds support for elogind, a standalone version of systemd's logind daemon. Requires the elogind development files be installed. This option cannot be enabled at the same time as the --with-systemd option above.
+
--with-upower: This adds the support for UPower.
--with-mit-ext: This enables the lock-after-screensaver feature. This options requires the X11 Screen Saver extension development files to be installed.
diff --git a/configure.ac.in b/configure.ac.in
index 67c271b..2c0678f 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -408,7 +408,7 @@ if test "x$with_systemd" = "xauto" ; then
use_systemd=yes
fi
else
- use_systemd=$with_systemd
+ use_systemd=$with_systemd
fi
if test "x$use_systemd" = "xyes"; then
@@ -421,6 +421,42 @@ fi
AC_SUBST(SYSTEMD_CFLAGS)
AC_SUBST(SYSTEMD_LIBS)
+dnl ---------------------------------------------------------------------------
+dnl elogind
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_WITH(elogind,
+ AS_HELP_STRING([--with-elogind],
+ [Add elogind support]),
+ [with_elogind=$withval], [with_elogind=auto])
+
+if test "x$with_systemd" = "xyes" && test "x$with_elogind" = "xyes"; then
+ AC_MSG_ERROR([Conflicting options: --with-systemd and --with-elogind])
+fi
+
+PKG_CHECK_MODULES(ELOGIND,
+ [libelogind],
+ [have_elogind=yes], [have_elogind=no])
+
+if test "x$with_elogind" = "xauto" ; then
+ if test x$have_elogind = xno ; then
+ use_elogind=no
+ else
+ use_elogind=yes
+ fi
+else
+ use_elogind=$with_elogind
+fi
+
+if test "x$use_elogind" = "xyes"; then
+ if test "x$have_elogind" = "xno"; then
+ AC_MSG_ERROR([Elogind support explicitly required, but elogind not found])
+ fi
+ AC_DEFINE(WITH_ELOGIND, 1, [elogind support])
+fi
+AC_SUBST(ELOGIND_CFLAGS)
+AC_SUBST(ELOGIND_LIBS)
+
dnl ---------------------------------------------------------------------------
dnl UPower
dnl ---------------------------------------------------------------------------
@@ -640,6 +676,7 @@ echo "
Platform:
---------
systemd: ${use_systemd}
+ elogind: ${use_elogind}
UPower: ${use_upower}
Features:
diff --git a/src/Makefile.am b/src/Makefile.am
index 0fa4ef9..be6fb0d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -25,6 +25,7 @@ AM_CPPFLAGS = \
$(DBUS_CFLAGS) \
$(LIBNOTIFY_CFLAGS) \
$(SYSTEMD_CFLAGS) \
+ $(ELOGIND_CFLAGS) \
$(NULL)
bin_PROGRAMS = \
@@ -90,7 +91,8 @@ light_locker_SOURCES = \
light_locker_LDADD = \
$(LIGHT_LOCKER_LIBS) \
$(SAVER_LIBS) \
- $(SYSTEMD_LIBS) \
+ $(SYSTEMD_LIBS) \
+ $(ELOGIND_LIBS) \
$(NULL)
light_locker_LDFLAGS = -export-dynamic
diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
index 044a2bf..3ba476e 100644
--- a/src/gs-listener-dbus.c
+++ b/src/gs-listener-dbus.c
@@ -41,6 +41,8 @@
#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h>
+#elif WITH_ELOGIND
+#include <elogind/systemd/sd-login.h>
#endif
#include "gs-listener-dbus.h"
@@ -78,7 +80,7 @@ struct GSListenerPrivate
char *session_id;
char *seat_path;
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
gboolean have_systemd;
char *sd_session_id;
int delay_fd;
@@ -134,7 +136,7 @@ gs_listener_send_switch_greeter (GSListener *listener)
gs_debug ("Send switch greeter");
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
/* Compare with 0. On failure this will return < 0.
* In the later case we probably aren't using systemd.
*/
@@ -175,7 +177,7 @@ gs_listener_send_lock_session (GSListener *listener)
gs_debug ("Send lock session");
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
/* Compare with 0. On failure this will return < 0.
* In the later case we probably aren't using systemd.
*/
@@ -359,7 +361,7 @@ gs_listener_set_idle_hint (GSListener *listener, gboolean idle)
gs_debug ("Send idle hint: %d", idle);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
if (listener->priv->have_systemd) {
if (listener->priv->system_connection == NULL) {
@@ -400,7 +402,7 @@ gs_listener_set_idle_hint (GSListener *listener, gboolean idle)
void
gs_listener_delay_suspend (GSListener *listener)
{
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
DBusMessage *message;
DBusMessage *reply;
DBusError error;
@@ -473,7 +475,7 @@ gs_listener_delay_suspend (GSListener *listener)
void
gs_listener_resume_suspend (GSListener *listener)
{
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
gs_debug ("Resume suspend: fd=%d", listener->priv->delay_fd);
if (listener->priv->delay_fd >= 0) {
@@ -1076,7 +1078,7 @@ _listener_message_path_is_our_session (GSListener *listener,
return FALSE;
}
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
static gboolean
query_session_active (GSListener *listener)
{
@@ -1212,7 +1214,7 @@ query_lid_closed (GSListener *listener)
#endif
#endif
-#if defined(WITH_SYSTEMD) || (defined(WITH_UPOWER) && defined(WITH_LOCK_ON_LID))
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) || (defined(WITH_UPOWER) && defined(WITH_LOCK_ON_LID))
static gboolean
properties_changed_match (DBusMessage *message,
const char *property)
@@ -1307,7 +1309,7 @@ listener_dbus_handle_system_message (DBusConnection *connection,
dbus_message_get_destination (message));
#endif
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
if (listener->priv->have_systemd) {
@@ -1880,7 +1882,7 @@ gs_listener_acquire (GSListener *listener,
listener_dbus_system_filter_function,
listener,
NULL);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
if (listener->priv->have_systemd) {
dbus_bus_add_match (listener->priv->system_connection,
"type='signal'"
@@ -1971,7 +1973,7 @@ query_session_id (GSListener *listener)
dbus_error_init (&error);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
if (listener->priv->have_systemd) {
dbus_uint32_t pid = getpid();
@@ -2022,7 +2024,7 @@ query_session_id (GSListener *listener)
return NULL;
}
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
static char *
query_sd_session_id (GSListener *listener)
{
@@ -2053,7 +2055,7 @@ init_session_id (GSListener *listener)
else
gs_debug ("Got session-id: %s", listener->priv->session_id);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
g_free (listener->priv->sd_session_id);
listener->priv->sd_session_id = query_sd_session_id (listener);
if (listener->priv->sd_session_id == NULL)
@@ -2150,7 +2152,7 @@ gs_listener_init (GSListener *listener)
{
listener->priv = GS_LISTENER_GET_PRIVATE (listener);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
/* check if logind is running */
listener->priv->have_systemd = (access("/run/systemd/seats/", F_OK) >= 0);
listener->priv->delay_fd = -1;
@@ -2179,7 +2181,7 @@ gs_listener_finalize (GObject *object)
g_free (listener->priv->session_id);
g_free (listener->priv->seat_path);
-#ifdef WITH_SYSTEMD
+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
g_free (listener->priv->sd_session_id);
#endif
diff --git a/src/light-locker.c b/src/light-locker.c
index aefc4c6..612e300 100644
--- a/src/light-locker.c
+++ b/src/light-locker.c
@@ -139,6 +139,7 @@ main (int argc,
gs_debug ("Platform:\n"
"gtk: %d\n"
"systemd: %s\n"
+ "elogind: %s\n"
"UPower: %s",
GTK_MAJOR_VERSION,
#ifdef WITH_SYSTEMD
@@ -146,6 +147,11 @@ main (int argc,
#else
"no",
#endif
+#ifdef WITH_ELOGIND
+ "yes",
+#else
+ "no",
+#endif
#ifdef WITH_UPOWER
"yes"
#else
--
2.21.0