summaryrefslogtreecommitdiffstats
path: root/utils/xshm.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/xshm.h')
-rw-r--r--utils/xshm.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/utils/xshm.h b/utils/xshm.h
new file mode 100644
index 0000000..6159b36
--- /dev/null
+++ b/utils/xshm.h
@@ -0,0 +1,54 @@
+/* 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
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* The MIT-SHM (Shared Memory) extension is pretty tricky to use.
+ This file contains the common boiler-plate for creating a shared
+ XImage structure, and for making sure that the shared memory segments
+ get allocated and shut down cleanly.
+ */
+
+#ifndef __XSCREENSAVER_XSHM_H__
+#define __XSCREENSAVER_XSHM_H__
+
+#ifdef HAVE_XSHM_EXTENSION
+
+# include <sys/ipc.h>
+# include <sys/shm.h>
+# include <X11/extensions/XShm.h>
+
+#else /* !HAVE_XSHM_EXTENSION */
+
+typedef struct {
+ int shmid; /* Always -1. */
+} dummy_segment_info;
+
+/* In case XShmSegmentInfo */
+#undef XShmSegmentInfo
+#define XShmSegmentInfo dummy_segment_info
+
+#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__ */