projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://packetstormsecurity.org/UNIX/admin/xscreensaver-3.31.tar.gz
[xscreensaver]
/
driver
/
windows.c
diff --git
a/driver/windows.c
b/driver/windows.c
index a375e3068e541936937495817c9d66bb2ef244f5..29e046190fed02b12ece386ba3a496c2c3d875bf 100644
(file)
--- a/
driver/windows.c
+++ b/
driver/windows.c
@@
-1,5
+1,5
@@
/* windows.c --- turning the screen black; dealing with visuals, virtual roots.
/* windows.c --- turning the screen black; dealing with visuals, virtual roots.
- * xscreensaver, Copyright (c) 1991-
1998
Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-
2001
Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@
-159,28
+159,39
@@
static Bool
grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor)
{
Status mstatus, kstatus;
grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor)
{
Status mstatus, kstatus;
- XSync (si->dpy, False);
+ int i;
+ int retries = 4;
- kstatus = grab_kbd (si, window);
- if (kstatus != GrabSuccess)
- { /* try again in a second */
- sleep (1);
+ for (i = 0; i < retries; i++)
+ {
+ XSync (si->dpy, False);
kstatus = grab_kbd (si, window);
kstatus = grab_kbd (si, window);
- if (kstatus != GrabSuccess)
- fprintf (stderr, "%s: couldn't grab keyboard! (%s)\n",
- blurb(), grab_string(kstatus));
- }
+ if (kstatus == GrabSuccess)
+ break;
- mstatus = grab_mouse (si, window, cursor);
- if (mstatus != GrabSuccess)
- { /* try again in a second */
+ /* else, wait a second and try to grab again. */
sleep (1);
sleep (1);
+ }
+
+ if (kstatus != GrabSuccess)
+ fprintf (stderr, "%s: couldn't grab keyboard! (%s)\n",
+ blurb(), grab_string(kstatus));
+
+ for (i = 0; i < retries; i++)
+ {
+ XSync (si->dpy, False);
mstatus = grab_mouse (si, window, cursor);
mstatus = grab_mouse (si, window, cursor);
- if (mstatus != GrabSuccess)
- fprintf (stderr, "%s: couldn't grab pointer! (%s)\n",
- blurb(), grab_string(mstatus));
+ if (mstatus == GrabSuccess)
+ break;
+
+ /* else, wait a second and try to grab again. */
+ sleep (1);
}
}
+ if (mstatus != GrabSuccess)
+ fprintf (stderr, "%s: couldn't grab pointer! (%s)\n",
+ blurb(), grab_string(mstatus));
+
return (kstatus == GrabSuccess ||
mstatus == GrabSuccess);
}
return (kstatus == GrabSuccess ||
mstatus == GrabSuccess);
}
@@
-1466,16
+1477,14
@@
select_visual (saver_screen_info *ssi, const char *visual_name)
visual_name = "default";
install_cmap_p = False;
}
visual_name = "default";
install_cmap_p = False;
}
-#ifdef DAEMON_USE_GL
else if (!strcmp(visual_name, "gl") ||
!strcmp(visual_name, "Gl") ||
!strcmp(visual_name, "GL"))
{
else if (!strcmp(visual_name, "gl") ||
!strcmp(visual_name, "Gl") ||
!strcmp(visual_name, "GL"))
{
- new_v =
get_gl_visual (ssi->screen)
;
+ new_v =
ssi->best_gl_visual
;
if (!new_v && p->verbose_p)
fprintf (stderr, "%s: no GL visuals.\n", progname);
}
if (!new_v && p->verbose_p)
fprintf (stderr, "%s: no GL visuals.\n", progname);
}
-#endif /* DAEMON_USE_GL */
if (!new_v)
new_v = get_visual (ssi->screen, visual_name, True, False);
if (!new_v)
new_v = get_visual (ssi->screen, visual_name, True, False);