summaryrefslogtreecommitdiffstats
path: root/driver/windows.c
diff options
context:
space:
mode:
authorSimon Rettberg2018-10-16 10:21:16 +0200
committerSimon Rettberg2018-10-16 10:21:16 +0200
commit541cb14f1cf2d77f76b6cec665466a1685ff9b65 (patch)
tree1b9b3f8dc711c769eef0111e467e2424845ed5c1 /driver/windows.c
parentUpdate gitignore (diff)
downloadxscreensaver-541cb14f1cf2d77f76b6cec665466a1685ff9b65.tar.gz
xscreensaver-541cb14f1cf2d77f76b6cec665466a1685ff9b65.tar.xz
xscreensaver-541cb14f1cf2d77f76b6cec665466a1685ff9b65.zip
Add ungrab command, respawn hack before password prompt
Diffstat (limited to 'driver/windows.c')
-rw-r--r--driver/windows.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/driver/windows.c b/driver/windows.c
index 9b2bf84..c54f15e 100644
--- a/driver/windows.c
+++ b/driver/windows.c
@@ -235,7 +235,7 @@ ungrab_keyboard_and_mouse (saver_info *si)
static Bool
-grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor,
+grab_keyboard_and_mouse_real (saver_info *si, Window window, Cursor cursor,
int screen_no)
{
Status mstatus = 0, kstatus = 0;
@@ -320,6 +320,28 @@ grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor,
}
+static Bool
+grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor,
+ int screen_no)
+{
+ Bool ret;
+ char *euc = si->prefs.external_ungrab_command;
+ char cmd[200];
+ if (euc && *euc)
+ {
+ snprintf (cmd, sizeof(cmd), "%s %s", euc, "pre");
+ exec_and_wait (si, cmd);
+ }
+ ret = grab_keyboard_and_mouse_real (si, window, cursor, screen_no);
+ if (euc && *euc)
+ {
+ snprintf (cmd, sizeof(cmd), "%s %s", euc, "post");
+ exec_and_wait (si, cmd);
+ }
+ return ret;
+}
+
+
int
move_mouse_grab (saver_info *si, Window to, Cursor cursor, int to_screen_no)
{