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.37.tar.gz
[xscreensaver]
/
hacks
/
blitspin.c
diff --git
a/hacks/blitspin.c
b/hacks/blitspin.c
index d00a9e2aa9e8db2a7b204dcb769773da6d6caec0..af3ea752e76a51ab35cb9863b6f04d673b1d8582 100644
(file)
--- a/
hacks/blitspin.c
+++ b/
hacks/blitspin.c
@@
-25,8
+25,10
@@
*/
#include "screenhack.h"
*/
#include "screenhack.h"
+#include "pow2.h"
#include "xpm-pixmap.h"
#include <stdio.h>
#include "xpm-pixmap.h"
#include <stdio.h>
+#include <time.h>
#include "images/som.xbm"
#include "images/som.xbm"
@@
-40,7
+42,7
@@
So, on OSX, we implement the blitter by hand. It is correct, but
orders of magnitude slower.
*/
So, on OSX, we implement the blitter by hand. It is correct, but
orders of magnitude slower.
*/
-#ifndef HAVE_
COCOA
+#ifndef HAVE_
JWXYZ
# define USE_XCOPYAREA
#endif
# define USE_XCOPYAREA
#endif
@@
-154,7
+156,7
@@
blitspin_draw (Display *dpy, Window window, void *closure)
st->first_time = 0;
st->loaded_p = True;
st->qwad = -1;
st->first_time = 0;
st->loaded_p = True;
st->qwad = -1;
- st->start_time = time ((time_t) 0);
+ st->start_time = time ((time_t
*
) 0);
blitspin_init_2 (st);
}
blitspin_init_2 (st);
}
@@
-165,7
+167,7
@@
blitspin_draw (Display *dpy, Window window, void *closure)
if (!st->img_loader &&
st->load_ext_p &&
if (!st->img_loader &&
st->load_ext_p &&
- st->start_time + st->duration < time ((time_t) 0)) {
+ st->start_time + st->duration < time ((time_t
*
) 0)) {
/* Start a new image loading, but keep rotating the old image
until the new one arrives. */
st->img_loader = load_image_async_simple (0, st->xgwa.screen, st->window,
/* Start a new image loading, but keep rotating the old image
until the new one arrives. */
st->img_loader = load_image_async_simple (0, st->xgwa.screen, st->window,
@@
-219,17
+221,13
@@
blitspin_draw (Display *dpy, Window window, void *closure)
static int
static int
-
to_pow2(struct state *st,
int n, Bool up)
+
blitspin_to_pow2(
int n, Bool up)
{
{
- int powers_of_2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
- 2048, 4096, 8192, 16384, 32768, 65536 };
- int i = 0;
- if (n > 65536) st->size = 65536;
- while (n >= powers_of_2[i]) i++;
- if (n == powers_of_2[i-1])
+ int pow2 = to_pow2 (n);
+ if (n == pow2)
return n;
else
return n;
else
- return
powers_of_2[up ? i : i-1]
;
+ return
up ? pow2 : pow2 >> 1
;
}
static void *
}
static void *
@@
-254,7
+252,7
@@
blitspin_init (Display *d_arg, Window w_arg)
if (st->delay2 < 0) st->delay2 = 0;
if (st->duration < 1) st->duration = 1;
if (st->delay2 < 0) st->delay2 = 0;
if (st->duration < 1) st->duration = 1;
- st->start_time = time ((time_t) 0);
+ st->start_time = time ((time_t
*
) 0);
bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
if (! bitmap_name || !*bitmap_name)
bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
if (! bitmap_name || !*bitmap_name)
@@
-310,11
+308,12
@@
blitspin_init_2 (struct state *st)
/* make it square */
st->size = (st->width < st->height) ? st->height : st->width;
/* make it square */
st->size = (st->width < st->height) ? st->height : st->width;
- st->size = to_pow2(st, st->size, st->scale_up); /* round up to power of 2 */
+ /* round up to power of 2 */
+ st->size = blitspin_to_pow2(st->size, st->scale_up);
{ /* don't exceed screen size */
int s = XScreenNumberOfScreen(st->xgwa.screen);
{ /* don't exceed screen size */
int s = XScreenNumberOfScreen(st->xgwa.screen);
- int w =
to_pow2(st,
XDisplayWidth(st->dpy, s), False);
- int h =
to_pow2(st,
XDisplayHeight(st->dpy, s), False);
+ int w =
blitspin_to_pow2(
XDisplayWidth(st->dpy, s), False);
+ int h =
blitspin_to_pow2(
XDisplayHeight(st->dpy, s), False);
if (st->size > w) st->size = w;
if (st->size > h) st->size = h;
}
if (st->size > w) st->size = w;
if (st->size > h) st->size = h;
}
@@
-422,7
+421,7
@@
static const char *blitspin_defaults [] = {
"*duration: 120",
"*bitmap: (default)",
"*geometry: 1080x1080",
"*duration: 120",
"*bitmap: (default)",
"*geometry: 1080x1080",
-#ifdef
USE_IPHON
E
+#ifdef
HAVE_MOBIL
E
"*ignoreRotation: True",
#endif
0
"*ignoreRotation: True",
#endif
0