discuss-gnustep
[Top][All Lists]
Advanced

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

Re: flicker graphics on window resize


From: Fred Kiefer
Subject: Re: flicker graphics on window resize
Date: Sat, 21 Dec 2013 16:48:25 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0

Thank you for digging so deep. I tried to verify your findings by
removing the XGetWindowAttributes call from the XGCairoModernSurface (by
adding the used visual directly to the window data structure). But this
did not change the flickering in any way. We will need to look even
deeper here.

Fred


On 21.12.2013 13:30, Riccardo Canalicchio wrote:
> from my debugging here the call stack of a resize:
> ...
> NSWindow _processResizeEvent
>   CairoContext GSSetDevice
>   XGCairoModernSurface initWithDevice
>   XGetWindowAttributes* <-- HERE IS WHERE THE WINDOW BECOME WHITE (OR
> BLACK) *XGCairoModernSurface.m:48
> CairoContext handleExposeRect
> XGCairoModernSurface handleExposeRect
> ...
> and on the next XFlush the window get displayed
> 
> this mean that XGetWindowAttributes cause an error?
> 
> 
> On 20 December 2013 17:20, Fred Kiefer <fredkiefer@gmx.de> wrote:
> 
>> On 20.12.2013 11:03, Riccardo Canalicchio wrote:
>>> tell me If I'm right:
>>> - when using a buffered window there should be two cairo surfaces (back
>> and
>>> front)
>>> - a window resize, trigger the re initialisation of all the two surfaces
>>> - actually the fresh new surfaces get drawn immediatly (in my case they
>> are
>>> white)
>>
>> The first two are true according to my understanding. For the third I am
>> not really sure. We should add some log statements in the class
>> CairoContext and monitor in which order the following methods get called
>> during resize and whether the correct surface object gets used:
>>
>> + (void) handleExposeRect: (NSRect)rect forDriver: (void *)driver
>> - (void) GSSetDevice: (void *)device : (int)x : (int)y
>>
>> Hope this helps,
>> Fred




reply via email to

[Prev in Thread] Current Thread [Next in Thread]