[Pkg-xfce-commits] r9202 - in /goodies/trunk/light-locker/debian: changelog control patches/ patches/01_lid-closed.patch patches/series rules
Yves-Alexis Perez
corsac at moszumanska.debian.org
Sun Jun 21 09:17:56 UTC 2015
Author: corsac
Date: Sun Jun 21 09:17:56 2015
New Revision: 9202
URL: http://svn.debian.org/wsvn/pkg-xfce/?sc=1&rev=9202
Log:
* debian/patches:
- 01_lid-closed added, try to properly handle lock on lid closed in some
corner cases. closes: #788668
Added:
goodies/trunk/light-locker/debian/patches/
goodies/trunk/light-locker/debian/patches/01_lid-closed.patch
goodies/trunk/light-locker/debian/patches/series
Modified:
goodies/trunk/light-locker/debian/changelog
goodies/trunk/light-locker/debian/control
goodies/trunk/light-locker/debian/rules
Modified: goodies/trunk/light-locker/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-xfce/goodies/trunk/light-locker/debian/changelog?rev=9202&op=diff
==============================================================================
--- goodies/trunk/light-locker/debian/changelog (original)
+++ goodies/trunk/light-locker/debian/changelog Sun Jun 21 09:17:56 2015
@@ -1,3 +1,11 @@
+light-locker (1.6.0-3) UNRELEASED; urgency=medium
+
+ * debian/patches:
+ - 01_lid-closed added, try to properly handle lock on lid closed in some
+ corner cases. closes: #788668
+
+ -- Yves-Alexis Perez <corsac at debian.org> Sun, 14 Jun 2015 16:15:17 +0200
+
light-locker (1.6.0-2) unstable; urgency=medium
* Upload to unstable.
Modified: goodies/trunk/light-locker/debian/control
URL: http://svn.debian.org/wsvn/pkg-xfce/goodies/trunk/light-locker/debian/control?rev=9202&op=diff
==============================================================================
--- goodies/trunk/light-locker/debian/control (original)
+++ goodies/trunk/light-locker/debian/control Sun Jun 21 09:17:56 2015
@@ -7,7 +7,7 @@
Simon Huggins <huggie at earth.li>
Build-Depends: debhelper (>= 9), pkg-config,
liblightdm-gobject-dev (>= 1.3.5), libgtk-3-dev, libdbus-glib-1-dev,
- libxss-dev, libsystemd-login-dev, intltool
+ libxss-dev, libsystemd-login-dev, intltool, xfce4-dev-tools, libtool
Standards-Version: 3.9.6
Homepage: https://github.com/the-cavalry/light-locker/
Vcs-Svn: svn://anonscm.debian.org/pkg-xfce/goodies/trunk/light-locker
Added: goodies/trunk/light-locker/debian/patches/01_lid-closed.patch
URL: http://svn.debian.org/wsvn/pkg-xfce/goodies/trunk/light-locker/debian/patches/01_lid-closed.patch?rev=9202&op=file
==============================================================================
--- goodies/trunk/light-locker/debian/patches/01_lid-closed.patch (added)
+++ goodies/trunk/light-locker/debian/patches/01_lid-closed.patch Sun Jun 21 09:17:56 2015
@@ -0,0 +1,696 @@
+Description: Take patch from upstream to resolve black screen bugs.
+Source: https://github.com/the-cavalry/light-locker/tree/lid-closed
+
+diff --git a/README b/README
+index c1f2af3..f9ebe4b 100644
+--- a/README
++++ b/README
+@@ -22,6 +22,7 @@ There is no support for gnome-settings-daemon in order to keep things slim, so y
+ light-locker will automatically lock the session shortly after the X11 screen saver kicks in. The timeout can be set with --lock-after-screensaver. With xset the X11 screen saver can be adjusted.
+ Use --late-locking to avoid some of the negative effects of VT switching. This will lock the session on the deactivation of X11 screen saver instead of activation.
+ light-locker will automatically lock the session on suspend/resume. To disable this behaviour with --no-lock-on-suspend.
++With --lock-on-lid light-locker will automatically lock the lid close.
+
+
+ Building
+@@ -39,4 +40,5 @@ Here is a list of the different dependencies and there configuration flags:
+ Many of the light-locker features can be disabled/enabled and configured at build time. Here is a list of these configuration flag:
+ --enable-late-locking: Enables --late-locking and --no-late-locking. Default enabled with --no-late-locking. This requires mit-ext.
+ --enable-lock-on-suspend: Enables --lock-on-suspend and --no-lock-on-suspend. Default enabled with --lock-on-suspend. This requires either systemd or upower.
++ --enable-lock-on-lid: Enables --lock-on-lid and --no-lock-on-lid. Default enabled with --no-lock-on-suspend. This requires upower.
+
+diff --git a/configure.ac b/configure.ac
+index 699039a..0dafea6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -529,7 +529,6 @@ LATE_LOCKING_DEFAULT=false
+ with_late_locking_val=no
+ if test "x$have_mit" != "xyes"; then
+ enable_late_locking=no
+- with_late_locking_val=no
+ else
+ case $enable_late_locking in
+ on) with_late_locking_val=TRUE ; LATE_LOCKING_DEFAULT=true ;;
+@@ -553,6 +552,22 @@ if test "x$with_lock_on_suspend_val" != "xno"; then
+ fi
+ AC_SUBST(LOCK_ON_SUSPEND_DEFAULT)
+
++AC_ARG_ENABLE(lock-on-lid, [AC_HELP_STRING([--enable-lock-on-lid=[no/yes/on/off]], [Enable the --lock-on-lid command option, on means this options is used by default])],, enable_lock_on_lid=yes)
++LOCK_ON_LID_DEFAULT=false
++with_lock_on_lid_val=no
++if test "x$use_upower" != "xyes"; then
++ enable_lock_on_lid=no
++else
++ case $enable_lock_on_lid in
++ on) with_lock_on_lid_val=TRUE ; LOCK_ON_LID_DEFAULT=true ;;
++ off|yes) with_lock_on_lid_val=FALSE ;;
++ esac
++fi
++if test "x$with_lock_on_lid_val" != "xno"; then
++ AC_DEFINE_UNQUOTED(WITH_LOCK_ON_LID, [$with_lock_on_lid_val], [Lock on lid, TRUE default on FALSE default off])
++fi
++AC_SUBST(LOCK_ON_LID_DEFAULT)
++
+ AC_ARG_ENABLE(settings-backend, [AC_HELP_STRING([--enable-settings-backend=[no/yes/gsettings]], [Make te command options persistend by storing the settings])],, enable_settings_backend=yes)
+ with_settings_backend=no
+ case $enable_settings_backend in
+@@ -664,6 +679,7 @@ echo "
+ lock-after-screensaver: ${have_mit}
+ late-locking: ${enable_late_locking}
+ lock-on-suspend: ${enable_lock_on_suspend}
++ lock-on-lid: ${enable_lock_on_lid}
+ settings backend: ${with_settings_backend}
+ "
+
+diff --git a/data/apps.light-locker.gschema.xml.in.in b/data/apps.light-locker.gschema.xml.in.in
+index fd27152..f7c8ba9 100644
+--- a/data/apps.light-locker.gschema.xml.in.in
++++ b/data/apps.light-locker.gschema.xml.in.in
+@@ -5,7 +5,7 @@
+
+ <key name="lock-on-suspend" type="b">
+ <default>@LOCK_ON_SUSPEND_DEFAULT@</default>
+- <summary>Lock on Suspend</summary>
++ <summary>Lock on suspend</summary>
+ <description>Lock the screen when the computer is suspended.</description>
+ </key>
+
+@@ -24,5 +24,11 @@
+ disabled.</description>
+ </key>
+
++ <key name="lock-on-lid" type="b">
++ <default>@LOCK_ON_LID_DEFAULT@</default>
++ <summary>Lock on lid close</summary>
++ <description>Lock the screen when lid of the computer is closed.</description>
++ </key>
++
+ </schema>
+ </schemalist>
+diff --git a/data/light-locker.1 b/data/light-locker.1
+index 817f5a0..bfdcb59 100644
+--- a/data/light-locker.1
++++ b/data/light-locker.1
+@@ -45,6 +45,12 @@ Lock the screen on suspend/resume
+ .TP
+ .B \-\-no\-lock\-on\-suspend
+ Do not lock the screen on suspend/resume
++.TP
++.B \-\-lock\-on\-lid
++Lock the screen on lid close
++.TP
++.B \-\-no\-lock\-on\-lid
++Do not lock the screen on lid close
+ .P
+ This program also accepts the standard GTK options.
+ .SH SEE ALSO
+diff --git a/src/gs-bus.h b/src/gs-bus.h
+index 791e1a4..1a52ec1 100644
+--- a/src/gs-bus.h
++++ b/src/gs-bus.h
+@@ -43,6 +43,7 @@
+
+ /* UPower */
+ #define UP_SERVICE "org.freedesktop.UPower"
++#define UP_PATH "/org/freedesktop/UPower"
+ #define UP_INTERFACE "org.freedesktop.UPower"
+
+ /* lightDM */
+diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
+index bceb762..e5765ac 100644
+--- a/src/gs-listener-dbus.c
++++ b/src/gs-listener-dbus.c
+@@ -76,6 +76,7 @@ struct GSListenerPrivate
+ DBusConnection *system_connection;
+
+ guint active : 1;
++ guint lid_closed : 1;
+ guint blanked : 1;
+ time_t blanked_start;
+ char *session_id;
+@@ -107,6 +108,7 @@ enum {
+ enum {
+ PROP_0,
+ PROP_ACTIVE,
++ PROP_LID_CLOSED,
+ };
+
+ static DBusObjectPathVTable
+@@ -121,6 +123,12 @@ static guint signals [LAST_SIGNAL] = { 0, };
+
+ G_DEFINE_TYPE (GSListener, gs_listener, G_TYPE_OBJECT)
+
++gboolean
++gs_listener_is_lid_closed (GSListener *listener)
++{
++ return listener->priv->lid_closed;
++}
++
+ void
+ gs_listener_send_switch_greeter (GSListener *listener)
+ {
+@@ -989,7 +997,76 @@ query_session_active (GSListener *listener)
+ }
+ #endif
+
+-#ifdef WITH_SYSTEMD
++#ifdef WITH_UPOWER
++#ifdef WITH_LOCK_ON_LID
++static gboolean
++query_lid_closed (GSListener *listener)
++{
++ DBusMessage *message;
++ DBusMessage *reply;
++ DBusError error;
++ DBusMessageIter reply_iter;
++ DBusMessageIter sub_iter;
++ dbus_bool_t active = FALSE;
++ const char *interface;
++ const char *property;
++
++ if (listener->priv->system_connection == NULL) {
++ gs_debug ("No connection to the system bus");
++ return FALSE;
++ }
++
++ dbus_error_init (&error);
++
++ message = dbus_message_new_method_call (UP_SERVICE, UP_PATH, DBUS_PROPERTIES_INTERFACE, "Get");
++ if (message == NULL) {
++ gs_debug ("Couldn't allocate the dbus message");
++ return FALSE;
++ }
++
++ interface = UP_INTERFACE;
++ property = "LidIsClosed";
++
++ if (dbus_message_append_args (message, DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID) == FALSE) {
++ gs_debug ("Couldn't add args to the dbus message");
++ dbus_message_unref (message);
++ return FALSE;
++ }
++
++ /* FIXME: use async? */
++ reply = dbus_connection_send_with_reply_and_block (listener->priv->system_connection,
++ message,
++ -1, &error);
++ dbus_message_unref (message);
++
++ if (dbus_error_is_set (&error)) {
++ gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
++ dbus_error_free (&error);
++ return FALSE;
++ }
++
++ if (dbus_message_iter_init (reply, &reply_iter) == TRUE
++ && dbus_message_iter_get_arg_type (&reply_iter) == DBUS_TYPE_VARIANT) {
++
++ dbus_message_iter_recurse (&reply_iter, &sub_iter);
++
++ if (dbus_message_iter_get_arg_type (&sub_iter) == DBUS_TYPE_BOOLEAN) {
++ dbus_message_iter_get_basic (&sub_iter, &active);
++ } else {
++ gs_debug ("Unexpected return type");
++ }
++ } else {
++ gs_debug ("Unexpected return type");
++ }
++
++ dbus_message_unref (reply);
++
++ return active;
++}
++#endif
++#endif
++
++#if defined(WITH_SYSTEMD) || (defined(WITH_UPOWER) && defined(WITH_LOCK_ON_LID))
+ static gboolean
+ properties_changed_match (DBusMessage *message,
+ const char *property)
+@@ -1112,9 +1189,20 @@ listener_dbus_handle_system_message (DBusConnection *connection,
+
+ /* Do a DBus query, since the sd_session_is_active isn't up to date. */
+ new_active = query_session_active (listener);
++ gs_debug ("systemd notified ActiveSession %d", new_active);
+ g_signal_emit (listener, signals [SESSION_SWITCHED], 0, new_active);
+ }
+
++#ifdef WITH_UPOWER
++#ifdef WITH_LOCK_ON_LID
++ if (properties_changed_match (message, "LidIsClosed")) {
++ listener->priv->lid_closed = query_lid_closed (listener);
++ gs_debug ("UPower notified LidIsClosed %d", (int)listener->priv->lid_closed);
++ g_object_notify (G_OBJECT (listener), "lid-closed");
++ }
++#endif
++#endif
++
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+@@ -1206,6 +1294,18 @@ listener_dbus_handle_system_message (DBusConnection *connection,
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ #endif
++#ifdef WITH_LOCK_ON_LID
++ if (dbus_message_is_signal (message, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged")) {
++
++ if (properties_changed_match (message, "LidIsClosed")) {
++ listener->priv->lid_closed = query_lid_closed (listener);
++ gs_debug ("UPower notified LidIsClosed %d", (int)listener->priv->lid_closed);
++ g_object_notify (G_OBJECT (listener), "lid-closed");
++ }
++
++ return DBUS_HANDLER_RESULT_HANDLED;
++ }
++#endif
+ #endif
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+@@ -1389,6 +1489,9 @@ gs_listener_get_property (GObject *object,
+ case PROP_ACTIVE:
+ g_value_set_boolean (value, self->priv->active);
+ break;
++ case PROP_LID_CLOSED:
++ g_value_set_boolean (value, self->priv->lid_closed);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -1516,6 +1619,13 @@ gs_listener_class_init (GSListenerClass *klass)
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
++ g_object_class_install_property (object_class,
++ PROP_LID_CLOSED,
++ g_param_spec_boolean ("lid-closed",
++ NULL,
++ NULL,
++ FALSE,
++ G_PARAM_READABLE));
+
+ g_type_class_add_private (klass, sizeof (GSListenerPrivate));
+ }
+@@ -1701,6 +1811,17 @@ gs_listener_acquire (GSListener *listener,
+ NULL);
+ #endif
+
++#ifdef WITH_UPOWER
++#ifdef WITH_LOCK_ON_LID
++ dbus_bus_add_match (listener->priv->system_connection,
++ "type='signal'"
++ ",sender='"UP_SERVICE"'"
++ ",interface='"DBUS_INTERFACE_PROPERTIES"'"
++ ",member='PropertiesChanged'",
++ NULL);
++#endif
++#endif
++
+ return (res != -1);
+ }
+ #endif
+@@ -1741,6 +1862,14 @@ gs_listener_acquire (GSListener *listener,
+ ",member='Resuming'",
+ NULL);
+ #endif
++#ifdef WITH_LOCK_ON_LID
++ dbus_bus_add_match (listener->priv->system_connection,
++ "type='signal'"
++ ",sender='"UP_SERVICE"'"
++ ",interface='"DBUS_INTERFACE_PROPERTIES"'"
++ ",member='PropertiesChanged'",
++ NULL);
++#endif
+ #endif
+ }
+
+diff --git a/src/gs-listener-dbus.h b/src/gs-listener-dbus.h
+index ff2b561..86fc1a0 100644
+--- a/src/gs-listener-dbus.h
++++ b/src/gs-listener-dbus.h
+@@ -83,6 +83,7 @@ gboolean gs_listener_set_active (GSListener *listener,
+ gboolean active);
+ void gs_listener_send_switch_greeter (GSListener *listener);
+ void gs_listener_send_lock_session (GSListener *listener);
++gboolean gs_listener_is_lid_closed (GSListener *listener);
+
+ G_END_DECLS
+
+diff --git a/src/gs-manager.c b/src/gs-manager.c
+index 32eeb52..c9ef1ff 100644
+--- a/src/gs-manager.c
++++ b/src/gs-manager.c
+@@ -49,6 +49,7 @@ struct GSManagerPrivate
+ guint active : 1;
+ guint visible : 1;
+ guint blank : 1;
++ guint closed : 1;
+ guint show_content : 1;
+
+ time_t activate_time;
+@@ -663,7 +664,7 @@ gs_manager_activate (GSManager *manager)
+
+ show_windows (manager->priv->windows);
+
+- if (manager->priv->visible && !manager->priv->blank) {
++ if (manager->priv->visible && !manager->priv->blank && !manager->priv->closed) {
+ gs_manager_timed_switch (manager);
+ }
+
+@@ -731,7 +732,7 @@ gs_manager_set_session_visible (GSManager *manager,
+ {
+ manager->priv->visible = visible;
+
+- if (manager->priv->active && visible && !manager->priv->blank) {
++ if (manager->priv->active && visible && !manager->priv->blank && !manager->priv->closed) {
+ gs_manager_timed_switch (manager);
+ } else {
+ gs_manager_stop_switch (manager);
+@@ -757,7 +758,7 @@ gs_manager_set_blank_screen (GSManager *manager,
+ gs_manager_timed_lock (manager);
+ } else {
+ gs_manager_stop_lock (manager);
+- if (manager->priv->active && manager->priv->visible) {
++ if (manager->priv->active && manager->priv->visible && !manager->priv->closed) {
+ gs_manager_timed_switch (manager);
+ }
+ }
+@@ -773,6 +774,19 @@ gs_manager_get_blank_screen (GSManager *manager)
+ }
+
+ void
++gs_manager_set_lid_closed (GSManager *manager,
++ gboolean closed)
++{
++ manager->priv->closed = closed;
++
++ if (manager->priv->active && manager->priv->visible && !manager->priv->blank && !closed) {
++ gs_manager_timed_switch (manager);
++ } else {
++ gs_manager_stop_switch (manager);
++ }
++}
++
++void
+ gs_manager_set_lock_after (GSManager *manager,
+ guint lock_after)
+ {
+diff --git a/src/gs-manager.h b/src/gs-manager.h
+index 7219704..ebf369e 100644
+--- a/src/gs-manager.h
++++ b/src/gs-manager.h
+@@ -68,6 +68,9 @@ void gs_manager_set_blank_screen (GSManager *manager,
+
+ gboolean gs_manager_get_blank_screen (GSManager *manager);
+
++void gs_manager_set_lid_closed (GSManager *manager,
++ gboolean closed);
++
+ void gs_manager_set_lock_after (GSManager *manager,
+ guint lock_after);
+
+diff --git a/src/gs-monitor.c b/src/gs-monitor.c
+index 07e666e..7a4be44 100644
+--- a/src/gs-monitor.c
++++ b/src/gs-monitor.c
+@@ -55,6 +55,7 @@ struct GSMonitorPrivate
+ guint late_locking : 1;
+ guint lock_on_suspend : 1;
+ guint perform_lock : 1;
++ guint lock_on_lid : 1;
+ };
+
+ G_DEFINE_TYPE (GSMonitor, gs_monitor, G_TYPE_OBJECT)
+@@ -191,11 +192,26 @@ conf_lock_after_screensaver_cb (LLConfig *conf,
+ }
+
+ static void
++conf_lock_on_lid_cb (LLConfig *conf,
++ GParamSpec *pspec,
++ GSMonitor *monitor)
++{
++ gboolean lock_on_lid = FALSE;
++
++ g_object_get (G_OBJECT(conf),
++ "lock-on-lid", &lock_on_lid,
++ NULL);
++
++ monitor->priv->lock_on_lid = lock_on_lid;
++}
++
++static void
+ disconnect_conf_signals (GSMonitor *monitor)
+ {
+ g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_on_suspend_cb, monitor);
+ g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_late_locking_cb, monitor);
+ g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_after_screensaver_cb, monitor);
++ g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_on_lid_cb, monitor);
+ }
+
+ static void
+@@ -207,6 +223,8 @@ connect_conf_signals (GSMonitor *monitor)
+ G_CALLBACK (conf_late_locking_cb), monitor);
+ g_signal_connect (monitor->priv->conf, "notify::lock-after-screensaver",
+ G_CALLBACK (conf_lock_after_screensaver_cb), monitor);
++ g_signal_connect (monitor->priv->conf, "notify::lock-on-lid",
++ G_CALLBACK (conf_lock_on_lid_cb), monitor);
+ }
+
+ static void
+@@ -223,7 +241,9 @@ listener_lock_cb (GSListener *listener,
+ GSMonitor *monitor)
+ {
+ gs_monitor_lock_screen (monitor);
+- if (gs_manager_get_session_visible (monitor->priv->manager)) {
++ if (gs_listener_is_lid_closed (listener)) {
++ monitor->priv->perform_lock = TRUE;
++ } else if (gs_manager_get_session_visible (monitor->priv->manager)) {
+ /* Add a 1s delay for VT switching.
+ * This seems to preserved content exposure.
+ */
+@@ -331,6 +351,46 @@ listener_idle_time_cb (GSListener *listener,
+ }
+
+ static void
++listener_lid_closed_cb (GSListener *listener,
++ GParamSpec *pspec,
++ GSMonitor *monitor)
++{
++ gboolean closed = gs_listener_is_lid_closed (listener);
++
++ if (monitor->priv->perform_lock && ! closed)
++ {
++ if (gs_manager_get_session_visible (monitor->priv->manager)) {
++ gs_listener_send_lock_session (monitor->priv->listener);
++ }
++ monitor->priv->perform_lock = FALSE;
++ return;
++ }
++
++ gs_manager_set_lid_closed (monitor->priv->manager, closed);
++
++ if (! monitor->priv->lock_on_lid)
++ return;
++
++ if (closed)
++ {
++ /* Show the lock screen until lid open.
++ * We lock the screen here even when the displaymanager didn't send the signal.
++ * This means that need tell the displaymanager to lock the session before it can unlock.
++ */
++ gs_monitor_lock_screen (monitor);
++ }
++ else
++ {
++ /* Add a 1s delay for resume to complete.
++ * This seems to fix backlight issues.
++ */
++ g_timeout_add_seconds (1,
++ (GSourceFunc)gs_monitor_switch_greeter,
++ monitor);
++ }
++}
++
++static void
+ listener_x11_blanking_changed_cb (GSListenerX11 *listener,
+ gboolean active,
+ GSMonitor *monitor)
+@@ -358,6 +418,7 @@ disconnect_listener_signals (GSMonitor *monitor)
+ g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_blanking_cb, monitor);
+ g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_inhibit_cb, monitor);
+ g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_idle_time_cb, monitor);
++ g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_lid_closed_cb, monitor);
+
+ g_signal_handlers_disconnect_by_func (monitor->priv->listener_x11, listener_x11_blanking_changed_cb, monitor);
+ }
+@@ -385,6 +446,8 @@ connect_listener_signals (GSMonitor *monitor)
+ G_CALLBACK (listener_inhibit_cb), monitor);
+ g_signal_connect (monitor->priv->listener, "idle-time",
+ G_CALLBACK (listener_idle_time_cb), monitor);
++ g_signal_connect (monitor->priv->listener, "notify::lid-closed",
++ G_CALLBACK (listener_lid_closed_cb), monitor);
+
+ g_signal_connect (monitor->priv->listener_x11, "blanking-changed",
+ G_CALLBACK (listener_x11_blanking_changed_cb), monitor);
+@@ -421,6 +484,9 @@ gs_monitor_init (GSMonitor *monitor)
+ #ifdef WITH_LOCK_ON_SUSPEND
+ monitor->priv->lock_on_suspend = WITH_LOCK_ON_SUSPEND;
+ #endif
++#ifdef WITH_LOCK_ON_LID
++ monitor->priv->lock_on_lid = WITH_LOCK_ON_LID;
++#endif
+
+ monitor->priv->listener = gs_listener_new ();
+ monitor->priv->listener_x11 = gs_listener_x11_new ();
+@@ -460,6 +526,7 @@ gs_monitor_new (LLConfig *config)
+ GSMonitor *monitor;
+ gboolean late_locking = FALSE;
+ gboolean lock_on_suspend = FALSE;
++ gboolean lock_on_lid = FALSE;
+ guint lock_after_screensaver = 5;
+
+ monitor = g_object_new (GS_TYPE_MONITOR, NULL);
+@@ -471,11 +538,13 @@ gs_monitor_new (LLConfig *config)
+ g_object_get (G_OBJECT (config),
+ "late-locking", &late_locking,
+ "lock-on-suspend", &lock_on_suspend,
++ "lock-on-lid", &lock_on_lid,
+ "lock-after-screensaver", &lock_after_screensaver,
+ NULL);
+
+ monitor->priv->late_locking = late_locking;
+ monitor->priv->lock_on_suspend = lock_on_suspend;
++ monitor->priv->lock_on_lid = lock_on_lid;
+
+ gs_manager_set_lock_after (monitor->priv->manager, lock_after_screensaver);
+
+diff --git a/src/light-locker.c b/src/light-locker.c
+index 4f503bd..c179936 100644
+--- a/src/light-locker.c
++++ b/src/light-locker.c
+@@ -57,6 +57,7 @@ main (int argc,
+ static gint lock_after_screensaver;
+ static gboolean late_locking;
+ static gboolean lock_on_suspend;
++ static gboolean lock_on_lid;
+
+ static GOptionEntry entries [] = {
+ { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
+@@ -72,6 +73,10 @@ main (int argc,
+ { "lock-on-suspend", 0, 0, G_OPTION_ARG_NONE, &lock_on_suspend, N_("Lock the screen on suspend/resume"), NULL },
+ { "no-lock-on-suspend", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &lock_on_suspend, N_("Do not lock the screen on suspend/resume"), NULL },
+ #endif
++#ifdef WITH_LOCK_ON_LID
++ { "lock-on-lid", 0, 0, G_OPTION_ARG_NONE, &lock_on_lid, N_("Lock the screen on lid close"), NULL },
++ { "no-lock-on-lid", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &lock_on_lid, N_("Do not lock the screen on lid close"), NULL },
++#endif
+ { NULL }
+ };
+
+@@ -90,6 +95,7 @@ main (int argc,
+ "lock-on-suspend", &lock_on_suspend,
+ "late-locking", &late_locking,
+ "lock-after-screensaver", &lock_after_screensaver,
++ "lock-on-lid", &lock_on_lid,
+ NULL);
+
+ #ifndef WITH_LATE_LOCKING
+@@ -100,6 +106,10 @@ main (int argc,
+ lock_on_suspend = FALSE;
+ #endif
+
++#ifndef WITH_LOCK_ON_LID
++ lock_on_lid = FALSE;
++#endif
++
+ if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error)) {
+ if (error) {
+ g_warning ("%s", error->message);
+@@ -120,6 +130,7 @@ main (int argc,
+ "lock-on-suspend", lock_on_suspend,
+ "late-locking", late_locking,
+ "lock-after-screensaver", lock_after_screensaver,
++ "lock-on-lid", lock_on_lid,
+ NULL);
+
+ gs_debug_init (debug, FALSE);
+@@ -128,6 +139,7 @@ main (int argc,
+ gs_debug ("lock after screensaver %d", lock_after_screensaver);
+ gs_debug ("late locking %d", late_locking);
+ gs_debug ("lock on suspend %d", lock_on_suspend);
++ gs_debug ("lock on lid %d", lock_on_lid);
+
+ monitor = gs_monitor_new (conf);
+
+diff --git a/src/ll-config.c b/src/ll-config.c
+index 5e6417d..a9ee9eb 100644
+--- a/src/ll-config.c
++++ b/src/ll-config.c
+@@ -17,6 +17,7 @@ enum
+ PROP_LOCK_ON_SUSPEND,
+ PROP_LATE_LOCKING,
+ PROP_LOCK_AFTER_SCREENSAVER,
++ PROP_LOCK_ON_LID,
+ N_PROP
+ };
+
+@@ -43,6 +44,7 @@ struct _LLConfig
+ guint lock_after_screensaver;
+ gboolean late_locking : 1;
+ gboolean lock_on_suspend : 1;
++ gboolean lock_on_lid : 1;
+ };
+
+ G_DEFINE_TYPE (LLConfig, ll_config, G_TYPE_OBJECT)
+@@ -78,6 +80,10 @@ static void ll_config_set_property (GObject *object,
+ conf->lock_on_suspend = g_value_get_boolean(value);
+ break;
+
++ case PROP_LOCK_ON_LID:
++ conf->lock_on_lid = g_value_get_boolean(value);
++ break;
++
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -114,6 +120,10 @@ static void ll_config_get_property (GObject *object,
+ g_value_set_boolean(value, conf->lock_on_suspend);
+ break;
+
++ case PROP_LOCK_ON_LID:
++ g_value_set_boolean(value, conf->lock_on_lid);
++ break;
++
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -174,6 +184,19 @@ ll_config_class_init (LLConfigClass *klass)
+ 3600,
+ 0,
+ G_PARAM_READWRITE));
++
++ /**
++ * LLConfig:lock-on-lid:
++ *
++ * Enable lock-on-lid
++ **/
++ g_object_class_install_property (object_class,
++ PROP_LOCK_ON_LID,
++ g_param_spec_boolean ("lock-on-lid",
++ NULL,
++ NULL,
++ FALSE,
++ G_PARAM_READWRITE));
+ }
+
+ /**
+@@ -199,6 +222,9 @@ ll_config_init (LLConfig *conf)
+ #ifdef WITH_LOCK_ON_SUSPEND
+ conf->lock_on_suspend = WITH_LOCK_ON_SUSPEND;
+ #endif
++#ifdef WITH_LOCK_ON_LID
++ conf->lock_on_lid = WITH_LOCK_ON_LID;
++#endif
+
+ #ifdef WITH_SETTINGS_BACKEND
+ #define GSETTINGS 1
Added: goodies/trunk/light-locker/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-xfce/goodies/trunk/light-locker/debian/patches/series?rev=9202&op=file
==============================================================================
--- goodies/trunk/light-locker/debian/patches/series (added)
+++ goodies/trunk/light-locker/debian/patches/series Sun Jun 21 09:17:56 2015
@@ -0,0 +1 @@
+01_lid-closed.patch
Modified: goodies/trunk/light-locker/debian/rules
URL: http://svn.debian.org/wsvn/pkg-xfce/goodies/trunk/light-locker/debian/rules?rev=9202&op=diff
==============================================================================
--- goodies/trunk/light-locker/debian/rules (original)
+++ goodies/trunk/light-locker/debian/rules Sun Jun 21 09:17:56 2015
@@ -4,6 +4,7 @@
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
override_dh_auto_configure:
+ NOCONFIGURE=1 xdt-autogen
dh_auto_configure -- --disable-silent-rules \
--with-systemd \
--with-upower \
More information about the Pkg-xfce-commits
mailing list