X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fxflame.c;h=7e35081e7a62633ad8b8943d87f63cbfa4daa210;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hp=0a3739b567b51af172a91b1e657d98c36b2045ae;hpb=4ade52359b6eba3621566dac79793a33aa4c915f;p=xscreensaver diff --git a/hacks/xflame.c b/hacks/xflame.c index 0a3739b5..7e35081e 100644 --- a/hacks/xflame.c +++ b/hacks/xflame.c @@ -41,6 +41,7 @@ * 4-Oct-99, jwz: added support for packed-24bpp (versus 32bpp.) * 16-Jan-2002, jwz: added gdk_pixbuf support. + * 9-Oct-2016, Dave Odell : Updated for new xshm.c. */ @@ -54,9 +55,7 @@ #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) -#ifdef HAVE_XSHM_EXTENSION -# include "xshm.h" -#endif /* HAVE_XSHM_EXTENSION */ +#include "xshm.h" #include "images/bob.xbm" @@ -71,12 +70,9 @@ struct state { Colormap colormap; Visual *visual; Screen *screen; - Bool shared; Bool bloom; XImage *xim; -#ifdef HAVE_XSHM_EXTENSION XShmSegmentInfo shminfo; -#endif /* HAVE_XSHM_EXTENSION */ GC gc; int ctab[256]; @@ -125,30 +121,15 @@ MakeImage(struct state *st) { XGCValues gcv; - /* #### This probably leaks SHM every time the window is resized. */ if (st->xim) - XDestroyImage (st->xim); - -#ifdef HAVE_XSHM_EXTENSION - st->shared = True; - st->xim = create_xshm_image (st->dpy, st->visual, st->depth, ZPixmap, NULL, - &st->shminfo, st->width, st->height); -#else /* !HAVE_XSHM_EXTENSION */ - st->xim = 0; -#endif /* !HAVE_XSHM_EXTENSION */ + destroy_xshm_image (st->dpy, st->xim, &st->shminfo); + st->xim = create_xshm_image (st->dpy, st->visual, st->depth, ZPixmap, + &st->shminfo, st->width, st->height); if (!st->xim) { - st->shared = False; - st->xim = XCreateImage (st->dpy, st->visual, st->depth, ZPixmap, 0, NULL, - st->width, st->height, 32, 0); - if (st->xim) - st->xim->data = (char *) calloc(st->xim->height, st->xim->bytes_per_line); - if (!st->xim || !st->xim->data) - { - fprintf(stderr,"%s: out of memory.\n", progname); - exit(1); - } + fprintf(stderr,"%s: out of memory.\n", progname); + exit(1); } if (! st->gc) @@ -203,14 +184,9 @@ InitColors(struct state *st) static void DisplayImage(struct state *st) { -#ifdef HAVE_XSHM_EXTENSION - if (st->shared) - XShmPutImage(st->dpy, st->window, st->gc, st->xim, 0,(st->top - 1) << 1, 0, - (st->top - 1) << 1, st->width, st->height - ((st->top - 1) << 1), False); - else -#endif /* HAVE_XSHM_EXTENSION */ - XPutImage(st->dpy, st->window, st->gc, st->xim, 0, (st->top - 1) << 1, 0, - (st->top - 1) << 1, st->width, st->height - ((st->top - 1) << 1)); + put_xshm_image(st->dpy, st->window, st->gc, st->xim, 0,(st->top - 1) << 1, 0, + (st->top - 1) << 1, st->width, st->height - ((st->top - 1) << 1), + &st->shminfo); } @@ -611,11 +587,11 @@ FlamePasteData(struct state *st, static unsigned char * loadBitmap(struct state *st, int *w, int *h) { +# ifdef HAVE_JWXYZ + const char *bitmap_name = "(default)"; /* #### always use builtin */ +# else char *bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap"); - -#ifdef HAVE_COCOA - bitmap_name = "(default)"; /* #### always use builtin */ -#endif /* HAVE_COCOA */ +# endif if (!bitmap_name || !*bitmap_name || @@ -625,13 +601,13 @@ loadBitmap(struct state *st, int *w, int *h) { XImage *ximage; unsigned char *result, *o; - char *bits = (char *) malloc (sizeof(bob_bits)); + unsigned char *bits = (unsigned char *) malloc (sizeof(bob_bits)); int x, y; int scale = ((st->width > bob_width * 10) ? 2 : 1); memcpy (bits, bob_bits, sizeof(bob_bits)); - ximage = XCreateImage (st->dpy, st->visual, 1, XYBitmap, 0, bits, - bob_width, bob_height, 8, 0); + ximage = XCreateImage (st->dpy, st->visual, 1, XYBitmap, 0, + (char *) bits, bob_width, bob_height, 8, 0); ximage->byte_order = LSBFirst; ximage->bitmap_bit_order = LSBFirst; *w = ximage->width * scale; @@ -644,7 +620,7 @@ loadBitmap(struct state *st, int *w, int *h) return result; } else /* load a bitmap file */ -#ifdef HAVE_COCOA +#ifdef HAVE_JWXYZ abort(); /* #### fix me */ #else { @@ -703,7 +679,7 @@ loadBitmap(struct state *st, int *w, int *h) *h = st->height; return result; } -#endif /* !HAVE_COCOA */ +#endif /* !HAVE_JWXYZ */ *w = 0; *h = 0;