From http://www.jwz.org/xscreensaver/xscreensaver-5.37.tar.gz
[xscreensaver] / utils / xshm.h
index 54e492e28e4cdd8e973ec9b9f0d8dedf208fd4c5..6159b36aab791c302f9e08b7de4d1125999732dc 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998
+/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 2001
  *  by Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -17,6 +17,7 @@
  */
 
 #ifndef __XSCREENSAVER_XSHM_H__
+#define __XSCREENSAVER_XSHM_H__
 
 #ifdef HAVE_XSHM_EXTENSION
 
 # include <sys/shm.h>
 # include <X11/extensions/XShm.h>
 
-extern XImage *create_xshm_image (Display *dpy, Visual *visual,
-                                 unsigned int depth,
-                                 int format, char *data,
-                                 XShmSegmentInfo *shm_info,
-                                 unsigned int width, unsigned int height);
+#else /* !HAVE_XSHM_EXTENSION */
+
+typedef struct {
+  int shmid; /* Always -1. */
+} dummy_segment_info;
+
+/* In case XShmSegmentInfo  */
+#undef XShmSegmentInfo
+#define XShmSegmentInfo dummy_segment_info
 
-#endif /* HAVE_XSHM_EXTENSION */
+#endif
+
+extern XImage *create_xshm_image (Display *dpy, Visual *visual,
+                                  unsigned int depth,
+                                  int format, XShmSegmentInfo *shm_info,
+                                  unsigned int width, unsigned int height);
+extern Bool put_xshm_image (Display *dpy, Drawable d, GC gc, XImage *image,
+                            int src_x, int src_y, int dest_x, int dest_y,
+                            unsigned int width, unsigned int height,
+                            XShmSegmentInfo *shm_info);
+extern Bool get_xshm_image (Display *dpy, Drawable d, XImage *image,
+                            int x, int y, unsigned long plane_mask,
+                            XShmSegmentInfo *shm_info);
+extern void destroy_xshm_image (Display *dpy, XImage *image,
+                                XShmSegmentInfo *shm_info);
 
 #endif /* __XSCREENSAVER_XSHM_H__ */