[Xcb] socket handoff problems

Barton C Massey bart at cs.pdx.edu
Fri Jan 16 01:32:39 PST 2009


In message <194f62550901150858t1d5744e1iee4c25ed3c3dd378 at mail.gmail.com> you wrote:
> I still was not able to resolve the problems I experience with
> socket-handoff, I already wrote an Email about that about two weeks
> ago.

I think Jamey and Josh are probably the only people who
understand the new handoff code well enough to help you with
this, so I've been waiting for them to respond.

> I've created a simple test-case which basically only renders
> rectangles mixing the XRender API and self-generated protocol.

Awesome.  I forget: is the whole test code somewhere where
we can look at it?

> When resizing the window, or switching focus between the test-case
> window and another one, I often see the client blocking, waiting for
> the XServer:
> 
> #0  0x00110416 in __kernel_vsyscall ()
> #1  0x009885bd in ___newselect_nocancel () from /lib/libc.so.6
> #2  0x00118035 in _xcb_conn_wait () from /opt/xorg/lib/libxcb.so.1
> #3  0x0011a33a in xcb_wait_for_reply () from /opt/xorg/lib/libxcb.so.1
> #4  0x00169078 in _XReply () from /opt/xorg/lib/libX11.so.6
> #5  0x001627fb in _XPrivSyncFunction () from /opt/xorg/lib/libX11.so.6
> #6  0x00242c42 in XRenderFillRectangle () from /opt/xorg/lib/libXrender.so.1
> #7  0x08049115 in main ()
> 
>  All I do is basically:
> 
>     for(x=0; x < 1000; x++) {
>         int flags = 0; uint64_t sent;
>         xcb_take_socket(con, &return_socket, &flags, flags, &sent);
> 
>         struct iovec vect;
>         vect.iov_base = buffer; //buffer contains 1000 XRenderFillRetcangles
>         vect.iov_len = buffer_len;
> 
>         xcb_writev(con, &vect, 1, 1000);
>     }

I'm confused.  Once you've taken over the socket, don't you
want to do the write() yourself instead of asking xcb to do
it with xcb_writev()?  Or is my understanding of the handoff
process flawed?  I assume you give the socket back when
you're done?

> The problem is completly halting progress of the open-source program I
> am working on: http://78.31.67.79:8080/jxrender/
> Sorry that I bother you again with that issue, but I don't know C very
> well and I am completly unexperienced with posix functions.
> Please, could somebody take a look at it.

Sorry I can't be of more help.

    Bart



More information about the Xcb mailing list