projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver]
/
hacks
/
maze.c
diff --git
a/hacks/maze.c
b/hacks/maze.c
index 811aca31f6786bca6b7c62149da893c90e0d4fac..d5f4ef27a8873aeeecab731055969d0d9c18f39d 100644
(file)
--- a/
hacks/maze.c
+++ b/
hacks/maze.c
@@
-93,10
+93,11
@@
#include <stdio.h>
/* #include <X11/bitmaps/gray1> */
#include <stdio.h>
/* #include <X11/bitmaps/gray1> */
+/*
#define gray1_width 2
#define gray1_height 2
static const char gray1_bits[] = { 0x01, 0x02 };
#define gray1_width 2
#define gray1_height 2
static const char gray1_bits[] = { 0x01, 0x02 };
-
+*/
#define MAX_MAZE_SIZE_X 1000
#define MAX_MAZE_SIZE_Y 1000
#define MAX_MAZE_SIZE_X 1000
#define MAX_MAZE_SIZE_Y 1000
@@
-870,8
+871,10
@@
static int
backup (struct state *st) /* back up a move */
{
st->sqnum--;
backup (struct state *st) /* back up a move */
{
st->sqnum--;
- st->cur_sq_x = st->move_list[st->sqnum].x;
- st->cur_sq_y = st->move_list[st->sqnum].y;
+ if (st->sqnum >= 0) {
+ st->cur_sq_x = st->move_list[st->sqnum].x;
+ st->cur_sq_y = st->move_list[st->sqnum].y;
+ }
return ( st->sqnum );
}
return ( st->sqnum );
}
@@
-1477,7
+1480,7
@@
maze_init (Display *dpy_arg, Window window_arg)
st->logo_map = xscreensaver_logo (xgwa.screen, xgwa.visual, st->window,
xgwa.colormap, bg,
&pixels, &npixels, &logo_mask,
st->logo_map = xscreensaver_logo (xgwa.screen, xgwa.visual, st->window,
xgwa.colormap, bg,
&pixels, &npixels, &logo_mask,
- xgwa.width > 800);
+ xgwa.width > 800
|| xgwa.height > 800
);
if (logo_mask) {
XSetClipMask (st->dpy, st->logo_gc, logo_mask);
XFreePixmap (st->dpy, logo_mask);
if (logo_mask) {
XSetClipMask (st->dpy, st->logo_gc, logo_mask);
XFreePixmap (st->dpy, logo_mask);
@@
-1588,6
+1591,9
@@
maze_draw (Display *dpy, Window window, void *closure)
st->stop = 0;
st->state = 1;
st->stop = 0;
st->state = 1;
+ if (st->solve_state && st->solve_state->running)
+ st->solve_state->running = 0;
+
st->sync_p = ((random() % 4) != 0);
size = get_integer_resource (st->dpy, "gridSize", "Dimension");
st->sync_p = ((random() % 4) != 0);
size = get_integer_resource (st->dpy, "gridSize", "Dimension");
@@
-1608,9
+1614,8
@@
static Bool
maze_event (Display *dpy, Window window, void *closure, XEvent *event)
{
struct state *st = (struct state *) closure;
maze_event (Display *dpy, Window window, void *closure, XEvent *event)
{
struct state *st = (struct state *) closure;
- switch (event->type)
+ if (event->type == ButtonPress)
{
{
- case ButtonPress:
switch (event->xbutton.button)
{
case 2:
switch (event->xbutton.button)
{
case 2:
@@
-1627,14
+1632,17
@@
maze_event (Display *dpy, Window window, void *closure, XEvent *event)
st->stop = 0 ;
return True;
}
st->stop = 0 ;
return True;
}
- break;
-
- case Expose:
+ }
+ else if (event->type == Expose)
+ {
st->restart = 1;
st->restart = 1;
- break;
-
- default:
- break;
+ return False;
+ }
+ else if (screenhack_event_helper (dpy, window, event))
+ {
+ st->restart = 1 ;
+ st->stop = 0 ;
+ return True;
}
return False;
}
}
return False;
}