Re: [XFree86] BadAccess errors using XShmPutImage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [X Forum]     [Xorg]     [XFree86 Newbie]     [IETF Announce]     [Security]     [Font Config]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux Kernel]

  Powered by Linux