X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fslidescreen.c;h=190f50711f8f8a205932ebb306dba3955a987fad;hb=39809ded547bdbb08207d3e514950425215b4410;hp=a3859b573eded9084152b4093890463d29773d00;hpb=de460e831dc8578acfa8b72251ab9346c99c1f96;p=xscreensaver diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c index a3859b57..190f5071 100644 --- a/hacks/slidescreen.c +++ b/hacks/slidescreen.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2014 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -47,7 +47,6 @@ slidescreen_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); XWindowAttributes xgwa; - Visual *visual; XGCValues gcv; long gcflags; @@ -56,9 +55,8 @@ slidescreen_init (Display *dpy, Window window) XGetWindowAttributes (st->dpy, st->window, &xgwa); st->img_loader = load_image_async_simple (0, xgwa.screen, st->window, st->window, 0, 0); - st->start_time = time ((time_t) 0); + st->start_time = time ((time_t *) 0); - visual = xgwa.visual; st->max_width = xgwa.width; st->max_height = xgwa.height; @@ -110,7 +108,7 @@ slidescreen_init (Display *dpy, Window window) else st->bg = 1; -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ if (!fg_ok || bg_ok) { int i; @@ -169,7 +167,7 @@ slidescreen_init (Display *dpy, Window window) } XFree(all); } -#endif /* !HAVE_COCOA */ +#endif /* !HAVE_JWXYZ */ } gcv.foreground = st->fg; @@ -200,6 +198,16 @@ draw_grid (struct state *st) st->bitmap_w = xgwa.width; st->bitmap_h = xgwa.height; + if (xgwa.width < 50 || xgwa.height < 50) /* tiny window */ + { + int s = (xgwa.width < xgwa.height ? xgwa.width : xgwa.height); + border = 1; + st->grid_size = s / 2; + if (st->grid_size < 16) st->grid_size = 16; + if (st->bitmap_w < st->grid_size*2) st->bitmap_w = st->grid_size*2; + if (st->bitmap_h < st->grid_size*2) st->bitmap_h = st->grid_size*2; + } + st->grid_w = st->bitmap_w / st->grid_size; st->grid_h = st->bitmap_h / st->grid_size; st->hole_x = random () % st->grid_w; @@ -309,19 +317,19 @@ slidescreen_draw (Display *dpy, Window window, void *closure) { st->img_loader = load_image_async_simple (st->img_loader, 0, 0, 0, 0, 0); if (! st->img_loader) { /* just finished */ - st->start_time = time ((time_t) 0); + st->start_time = time ((time_t *) 0); draw_grid (st); } return st->delay; } if (!st->img_loader && - st->start_time + st->duration < time ((time_t) 0)) { + st->start_time + st->duration < time ((time_t *) 0)) { XWindowAttributes xgwa; XGetWindowAttributes(st->dpy, st->window, &xgwa); st->img_loader = load_image_async_simple (0, xgwa.screen, st->window, st->window, 0, 0); - st->start_time = time ((time_t) 0); + st->start_time = time ((time_t *) 0); st->draw_initted = 0; return st->delay; } @@ -427,11 +435,27 @@ static void slidescreen_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->max_width = w; + st->max_height = h; + if (! st->img_loader) { + XWindowAttributes xgwa; + XGetWindowAttributes (st->dpy, st->window, &xgwa); + st->img_loader = load_image_async_simple (0, xgwa.screen, st->window, + st->window, 0, 0); + st->start_time = time ((time_t *) 0); + } } static Bool slidescreen_event (Display *dpy, Window window, void *closure, XEvent *event) { + struct state *st = (struct state *) closure; + if (screenhack_event_helper (dpy, window, event)) + { + st->start_time = 0; + return True; + } return False; } @@ -447,6 +471,7 @@ slidescreen_free (Display *dpy, Window window, void *closure) static const char *slidescreen_defaults [] = { "*dontClearRoot: True", + "*fpsSolid: true", #ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */ "*visualID: Best", @@ -460,6 +485,10 @@ static const char *slidescreen_defaults [] = { "*delay: 50000", "*delay2: 1000000", "*duration: 120", +#ifdef HAVE_MOBILE + "*ignoreRotation: True", + "*rotateImages: True", +#endif 0 }; @@ -473,4 +502,4 @@ static XrmOptionDescRec slidescreen_options [] = { { 0, 0, 0, 0 } }; -XSCREENSAVER_MODULE ("Slidescreen", slidescreen) +XSCREENSAVER_MODULE ("SlideScreen", slidescreen)