summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gs-listener-dbus.c7
-rw-r--r--src/mate-screensaver-command.c10
2 files changed, 17 insertions, 0 deletions
diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
index d398601..a37e3f9 100644
--- a/src/gs-listener-dbus.c
+++ b/src/gs-listener-dbus.c
@@ -1373,6 +1373,8 @@ do_introspect (DBusConnection *connection,
" <interface name=\"org.mate.ScreenSaver\">\n"
" <method name=\"Lock\">\n"
" </method>\n"
+ " <method name=\"Unlock\">\n"
+ " </method>\n"
" <method name=\"Cycle\">\n"
" </method>\n"
" <method name=\"SimulateUserActivity\">\n"
@@ -1465,6 +1467,11 @@ listener_dbus_handle_session_message (DBusConnection *connection,
g_signal_emit (listener, signals [LOCK], 0);
return DBUS_HANDLER_RESULT_HANDLED;
}
+ if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Unlock"))
+ {
+ gs_listener_set_active (listener, FALSE);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Quit"))
{
g_signal_emit (listener, signals [QUIT], 0);
diff --git a/src/mate-screensaver-command.c b/src/mate-screensaver-command.c
index 11feb8b..60c6001 100644
--- a/src/mate-screensaver-command.c
+++ b/src/mate-screensaver-command.c
@@ -39,6 +39,7 @@
static gboolean do_quit = FALSE;
static gboolean do_lock = FALSE;
+static gboolean do_unlock = FALSE;
static gboolean do_cycle = FALSE;
static gboolean do_activate = FALSE;
static gboolean do_deactivate = FALSE;
@@ -71,6 +72,10 @@ static GOptionEntry entries [] =
N_("Tells the running screensaver process to lock the screen immediately"), NULL
},
{
+ "unlock", 'u', 0, G_OPTION_ARG_NONE, &do_unlock,
+ N_("Tells the running screensaver process to unlock the screen immediately"), NULL
+ },
+ {
"cycle", 'c', 0, G_OPTION_ARG_NONE, &do_cycle,
N_("If the screensaver is active then switch to another graphics demo"), NULL
},
@@ -423,6 +428,11 @@ do_command (DBusConnection *connection)
reply = screensaver_send_message_void (connection, "Lock", FALSE);
}
+ if (do_unlock)
+ {
+ reply = screensaver_send_message_void (connection, "Unlock", FALSE);
+ }
+
if (do_cycle)
{
reply = screensaver_send_message_void (connection, "Cycle", FALSE);