1 
2 #ifndef _imgbuff_h
3 #define _imgbuff_h
4 
5 #ifdef USE_MIT_SHM
6 #include <sys/ipc.h>
7 #include <sys/shm.h>
8 #include <X11/extensions/XShm.h>
9 #endif
10 
11 class ImageBuffer {
12 	public:
13 		ImageBuffer();
14 		~ImageBuffer();
15 
16 		XImage *Init(int w, int h, int bpp8);
GetXImage()17 		XImage *GetXImage()		{ return ximage; }
18 
PutImage(Display * dpy,Drawable d,GC gc,int src_x,int src_y,int dest_x,int dest_y,unsigned int w,unsigned int h)19 		void PutImage(Display *dpy,Drawable d,GC gc,int src_x, int src_y, int dest_x, int dest_y, unsigned int w, unsigned int h) {
20 #ifdef USE_MIT_SHM
21 			if (shm) {
22 					XShmPutImage(dpy,d,gc,ximage,src_x,src_y,dest_x,dest_y,w,h,False);
23 					XSync(dpy,0);
24 			}
25 			else
26 #endif
27 					XPutImage(dpy,d,gc,ximage,src_x,src_y,dest_x,dest_y,w,h); }
28 
29 	private:
30 		void AllocData(int w,int h,int bpp8);
31 		void FreeData();
32 
33 		XImage				*ximage;
34 		int					width, height;
35 
36 #ifdef USE_MIT_SHM
37 		int					shm;				// flag, if shared memory is in use
38 		XShmSegmentInfo	shminfo;			// shm information
39 #endif
40 };
41 
42 #endif
43