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.
