[PATCH] os: Don't write the reply that overflows output buffer

Kristian Høgsberg krh at bitplanet.net
Mon Aug 2 16:58:47 PDT 2010


On Mon, Aug 2, 2010 at 2:36 PM, Keith Packard <keithp at keithp.com> wrote:
> On Mon,  2 Aug 2010 11:29:55 -0400, Kristian Høgsberg <krh at bitplanet.net> wrote:
>>
>> Here's the other approach for fixing damage vs flush client.  In writing the
>> commit message, it certainly does feel like damage should just be fixed to
>> not reply on that behaviour.  And writing the patch, I realize that the
>> optimization is not just about saving a syscall, but also about avoiding
>> having to realloc the output buffer to hold a request that's bigger than
>> BUFSIZE (hello, XkbSendMap()).  The current code only does that when it
>> fails to write the output buffer + extra request and the remaining bytes
>> don't fit in a standard sized buffer.
>
> This doesn't really fix the issue as we're potentially sending a stream
> of events from the damage extension. We'd have to buffer all of them
> until FlushAllOutput, I think.

Ah, yes, I see the loop over the damage region boxes, should've
checked that.  It was pretty fragile to rely on that guarantee anyway;
if we want the rendering to happen before the event is sent, we should
do the rendering before we send the event.

> It is a nice cleanup though; let's look at this post-1.9 separately.

Maybe - the old code had the benefit of typically not having to
allocate a big buffer for big events. It would just add the big buffer
that overflowed the protocol buffer to the writev request and avoid
the copy.  And if I don't have to touch low level protocol code, I'd
rather not.

Kristian



More information about the xorg mailing list