Many thanks Mark - that was exactly the problem - works perfectly now. > It's likely that you're not handling the padding correctly. > Is (ximage->bytes_per_line == windowWidth * windowDepthBytes) ? > > In general, I like to create the XImage first and then allocate > the data later. That saves you from having to do the work of > finding out what the padding is supposed to be. That is, pass > NULL for the data field in XShmCreateImage. Then shmget with > (ximage->height * ximage->bytes_per_line), then fill in > ximage->data with the value returned by shmat. Eg: > > ximage = XShmCreateImage(..., &shminfo); > shminfo.shmid = shmget (.., ximage->height * ximage->bytes_per_line, ...); > shminfo.shmaddr = ximage->data = shmat(shminfo.shmid, 0, 0); > shminfo.readOnly = False; > XShmAttach (display, &shminfo); > > So the pitch you should use is ximage->bytes_per_line. You > can get that independently by looking up pixmap formats, but it's > easier to just have XShmCreateImage fill it in for you. > > Mark. > > > > On Mon, 3 Nov 2003, Callum Prentice wrote: > > > > 1) Does your X-server have SHM support? "MIT-SHM" should show up in > > > the list of extensions reported by xdpyinfo. > > > > Yep - that extension is listed when i run xdpyinfo. > > > > > 2) Does your operating system have SHM support? This sort of thing > > > is often disabled for security reasons. > > > > i'm not sure how to test this - i'm very much a x/unix novice - but after adding printf's > to > > another library i've been looking at (SDL), it seems that it is - SDL is certainly calling > > XShmPutImage () successfully. > > > > > 3) Programming errors on your part? BadAccess is generated if: > > > > Very likely. > > > > > a) the server doesn't know about the segment (you called > > > XShmAttach on it didn't you?). > > > > Yep - I do that. > > > > > b) The size is bad, that is, the segment is too small to > > > contain the source you specified (or the XImage is > > > improperly initialized). > > > > I suspect that it is some kind of unitialized structure problem. > > > > I chopped the return value tests and the error handler out of my code for clarity and > tacked > > it on the end of this message - might be something obvious. > > > > Thanks. > > > > cp > > > > > > -------- snip -------- > > shmInfo.shmid = shmget ( IPC_PRIVATE, windowWidth * windowDepthBytes * windowHeight, > IPC_CREAT > > | 0777 ); > > shmInfo.shmaddr = (char *)shmat ( shmInfo.shmid, 0, 0); > > shminfo.readOnly = False; > > > > XShmAttach ( display, &shmInfo ); > > > > XSync ( display, True ); > > > > shmctl ( shmInfo.shmid, IPC_RMID, NULL ); > > > > pixels = shmInfo.shmaddr; > > > > ximage = XShmCreateImage ( display, DefaultVisual ( display, screen ), windowDepth, > ZPixmap, > > shmInfo.shmaddr, &shmInfo, windowWidth, windowHeight ); > > > > XShmPutImage ( display, window, DefaultGC ( display, screen ), ximage, 0, 0, 0, 0, > > windowWidth, windowHeight, False ); > > > > ---------------------- > > > > > > > > > > > > > > i'm attempting to put together a simple test that creates a window, allocates a buffer > in > > > > memory and using an XImage and XShmPutImage () displays it on my screen. > > > > > > > > i have a tiny piece of code that (as far as i know) does all the right things - it > creates > > > the > > > > window but when i try to display the contents of my buffer via an XImage i get a > message > > > like > > > > this: > > > > > > > > X Error of failed request: BadAccess (attempt to access private resource denied) > > > > Major opcode of failed request: 144 (MIT-SHM) > > > > Minor opcode of failed request: 3 (X_ShmPutImage) > > > > > > > > i've seen this type of problem described in the newsgroups but there don't seem to be > any > > > > answers posted. > > > > > > > > i check the return from all my previous calls and they're fine. > > > > > > > > i'm using XFree86 version 4.3.0 (27 feb 2003), X Protocol version 11, rev 0, rel 6.6 > and > > > my OS > > > > is NetBSD/i386 1.6 [elf]. > > > _______________________________________________ XFree86 mailing list XFree86@xxxxxxxxxxx http://XFree86.Org/mailman/listinfo/xfree86