* 4-Oct-99, jwz: added support for packed-24bpp (versus 32bpp.)
* 16-Jan-2002, jwz: added gdk_pixbuf support.
+ * 9-Oct-2016, Dave Odell <dmo2118@gmail.com>: Updated for new xshm.c.
*/
#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"
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];
{
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)
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);
}
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 ||
{
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;
return result;
}
else /* load a bitmap file */
-#ifdef HAVE_COCOA
+#ifdef HAVE_JWXYZ
abort(); /* #### fix me */
#else
{
*h = st->height;
return result;
}
-#endif /* !HAVE_COCOA */
+#endif /* !HAVE_JWXYZ */
*w = 0;
*h = 0;