[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