X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Frotzoomer.c;h=cacb7229355a45d26d6f9fbf8b7beca9e386c3b6;hp=29a566275445ae07a6e70bacd5698a057e9bae53;hb=de460e831dc8578acfa8b72251ab9346c99c1f96;hpb=6b1c86cf395f59389e4ece4ea8f4bea2c332745b diff --git a/hacks/rotzoomer.c b/hacks/rotzoomer.c index 29a56627..cacb7229 100644 --- a/hacks/rotzoomer.c +++ b/hacks/rotzoomer.c @@ -59,6 +59,8 @@ struct state { int sweep; int delay; int anim; + int duration; + time_t start_time; async_load_state *img_loader; @@ -264,6 +266,7 @@ init_hack (struct state *st) { int i; + st->start_time = time ((time_t) 0); st->zoom_box = calloc (st->num_zoom, sizeof (struct zoom_area *)); for (i = 0; i < st->num_zoom; i++) { st->zoom_box[i] = create_zoom (st); @@ -295,6 +298,16 @@ rotzoomer_draw (Display *disp, Window win, void *closure) return st->delay; } + if (!st->img_loader && + 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); + return st->delay; + } + for (i = 0; i < st->num_zoom; i++) { if (st->move || st->sweep) update_position (st->zoom_box[i]); @@ -395,6 +408,9 @@ rotzoomer_init (Display *dpy, Window window) st->anim = get_boolean_resource (st->dpy, "anim", "Boolean"); st->delay = get_integer_resource (st->dpy, "delay", "Integer"); + st->duration = get_integer_resource (st->dpy, "duration", "Seconds"); + if (st->delay < 0) st->delay = 0; + if (st->duration < 1) st->duration = 1; /* In sweep or static mode, we want only one box */ if (st->sweep || !st->anim) @@ -404,6 +420,8 @@ rotzoomer_init (Display *dpy, Window window) if (!st->anim) st->sweep = 0; + st->start_time = time ((time_t) 0); + setup_X (st); return st; @@ -441,6 +459,7 @@ static const char *rotzoomer_defaults[] = { "*mode: stationary", "*numboxes: 2", "*delay: 10", + "*duration: 120", 0 }; @@ -454,6 +473,7 @@ static XrmOptionDescRec rotzoomer_options[] = { { "-anim", ".anim", XrmoptionNoArg, "True" }, { "-no-anim", ".anim", XrmoptionNoArg, "False" }, { "-delay", ".delay", XrmoptionSepArg, 0 }, + {"-duration", ".duration", XrmoptionSepArg, 0 }, { "-n", ".numboxes", XrmoptionSepArg, 0 }, { 0, 0, 0, 0 } };