Bug 84149

Summary: [GTK] Enable back double buffering on WebKitWebView to fix flickering
Product: WebKit Reporter: Carlos Garnacho <carlosg>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: carlosg, cgarcia, gustavo, mrobinson, webkit.review.bot, zan
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch, enable back GTK+ double buffering to fix flickering none

Description Carlos Garnacho 2012-04-17 06:42:27 PDT
WebKitWebView disables GTK+ double buffering as it already has its own backing store, as worthwhile as it is, it unfortunately brings in other side effects in how non-double-buffered widgets are rendered, from the docs of gdk_window_flush():

  "For Gtk widgets that don't use double buffering this will be called automatically before sending the expose event"

This means that all drawing commands up to the WebKitWebView parent GdkWindow are flushed to the X server before rendering the view itself, this may translate into flickering of the parent window background. GTK+ unfortunately has no means to let WebKit claim ownership on the backing buffer, nor to hand a surface to act as the backing buffer for a widget, so this has to be enabled back so all contents are composited before getting to the front store.

I'm going to attach a patch to remove the gtk_widget_set_double_buffered() call from wk1, as for wk2 the flickering is reportedly non visible, but I think the same issue may lie there, just better hidden.
Comment 1 Carlos Garnacho 2012-04-17 06:47:04 PDT
Created attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering
Comment 2 WebKit Review Bot 2012-04-17 06:47:47 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

Rejecting attachment 137530 [details] from review queue.

carlosg@gnome.org does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.
Comment 3 WebKit Review Bot 2012-04-17 06:48:29 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

Rejecting attachment 137530 [details] from commit-queue.

carlosg@gnome.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.
Comment 4 Carlos Garnacho 2012-04-17 06:51:43 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

Ehrm... unused to bugzilla review stuff, sorry :), setting to '?' now
Comment 5 Carlos Garcia Campos 2012-04-17 07:44:59 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

It's ok for me as long as this doesn't have a huge impact in performance, since the flickering effect is quite annoying.
Comment 6 Martin Robinson 2012-04-17 09:04:34 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

Thanks for spending the time to fix this!
Comment 7 WebKit Review Bot 2012-04-17 09:12:40 PDT
Comment on attachment 137530 [details]
Patch, enable back GTK+ double buffering to fix flickering

Clearing flags on attachment: 137530

Committed r114385: <http://trac.webkit.org/changeset/114385>
Comment 8 WebKit Review Bot 2012-04-17 09:12:44 PDT
All reviewed patches have been landed.  Closing bug.
Comment 9 Martin Robinson 2012-04-22 18:03:40 PDT
*** Bug 80747 has been marked as a duplicate of this bug. ***