https://bugs.documentfoundation.org/show_bug.cgi?id=170069

[email protected] <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #10 from [email protected] <[email protected]> ---
For the record, I am working on this.

This is only a problem with the Cairo canvas; platforms that use Skia (eg, Mac)
don't have the problem. It's related to how Cairo deals with window region
erasure by painting a rectangle of the transparent color, which exposes the
parent GtkWindow's background color.

The VCL does not actually set the GTK window background color even with the VCL
Window::SetBackground(); that just sets the VCL background color which is what
gets painted when Window::Erase() gets called.

So what happens in the presenter console is that when the timer text changes,
the text's region is invalidated which trigger a Window background erase during
the paint cycle. That erase is done with a fully transparent color (eg, the
alpha component is 255). That "punches through" any previous drawing on the
Cairo context that backs the presenter console.

When that presenter console Cairo context is copied into the GtkWindow that
transparent area allows the GtkWindow's background color to show through. Since
the VCL never sets the GtkWindow background color you see a flash of all-white.

Then the presenter console paints the background color and the new timer text
on top and waits to repaint until another second has elapsed. Same issue with
mouse-over on the buttons.

I'm currently (slowly) investigating whether the paint timer is causing
intermediate states to be copied to the GtkWindow prematurely. It shouldn't
matter whether transparent gets painted to the presenter console Cairo context
because immediately after it should paint the background color and the new
timer text, and *then* blit the completed frame to the GtkWindow, but that
clearly isn't happening in the right way.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to