*/
#include <math.h>
+#include <limits.h>
#include "screenhack.h"
#ifndef MIN
#define MINX 0.0
#define MINY 0.0
/* This should be *way* slower than the spotlight hack was */
-#define X_PERIOD 45000.0
-#define Y_PERIOD 36000.0
+#define X_PERIOD (45000.0 * 3)
+#define Y_PERIOD (36000.0 * 3)
struct state {
Display *dpy;
static long currentTimeInMs(struct state *st)
{
struct timeval curTime;
+ unsigned long ret_unsigned;
#ifdef GETTIMEOFDAY_TWO_ARGS
struct timezone tz = {0,0};
gettimeofday(&curTime, &tz);
#else
gettimeofday(&curTime);
#endif
- return curTime.tv_sec*1000 + curTime.tv_usec/1000.0;
+ ret_unsigned = curTime.tv_sec *1000U + curTime.tv_usec / 1000;
+ return (ret_unsigned <= LONG_MAX) ? ret_unsigned : -1 - (long)(ULONG_MAX - ret_unsigned);
}
static void *
XFillRectangle(st->dpy, st->window, st->window_gc, 0, 0, st->sizex, st->sizey);
XSetWindowBackground(st->dpy, st->window, bg);
- st->start_time = time ((time_t) 0);
+ st->start_time = time ((time_t *) 0);
st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
st->pm, 0, 0);
unsigned x, y, i, j;
long now;
+ unsigned long now_unsigned;
if (st->img_loader) /* still loading */
{
st->img_loader = load_image_async_simple (st->img_loader, 0, 0, 0, 0, 0);
if (! st->img_loader) { /* just finished */
XClearWindow (st->dpy, st->window);
- st->start_time = time ((time_t) 0);
+ st->start_time = time ((time_t *) 0);
if (!st->lenses) {
st->orig_map = XGetImage(st->dpy, st->pm, 0, 0, st->sizex, st->sizey, ~0L, ZPixmap);
/* XFreePixmap(st->dpy, st->pm);
}
if (!st->img_loader &&
- st->start_time + st->duration < time ((time_t) 0)) {
+ st->start_time + st->duration < time ((time_t *) 0)) {
st->img_loader = load_image_async_simple (0, st->screen, st->window,
st->pm, 0, 0);
return st->delay;
#define nrnd(x) (random() % (x))
now = currentTimeInMs(st);
- now += st->sinusoid_offset; /* don't run multiple screens in lock-step */
+ now_unsigned = (unsigned long) now + st->sinusoid_offset; /* don't run multiple screens in lock-step */
+ now = (now_unsigned <= LONG_MAX) ? now_unsigned : -1 - (long)(ULONG_MAX - now_unsigned);
/* find new x,y */
st->tlx = ((1. + sin(((double)now) / X_PERIOD * 2. * M_PI))/2.0)
static Bool
zoom_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;
}
"*lenses: true",
"*delay: 10000",
"*duration: 120",
- "*pixwidth: 10",
- "*pixheight: 10",
+ "*pixwidth: 40",
+ "*pixheight: 40",
"*pixspacex: 2",
"*pixspacey: 2",
"*lensoffsetx: 5",
"*lensoffsety: 5",
+#ifdef HAVE_MOBILE
+ "*ignoreRotation: True",
+ "*rotateImages: True",
+#endif
0
};