In blitVisibleContents(), we were calling the WebKit thread functions BackingStorePrivate::isScrollingOrZooming() and WebPage::isVisible(). This is not the right spot to do it. Furthermore, we want to move away from direct window access in WebKit and leave that kind of dirtywork to the client. The patch below removes invalidateWindow() as well as the two virtual scrollbar drawing functions and replaces it with one new virtual, WebPageClient::postToSurface(). This clears up threading issues and gets us another step further towards pure WebPageCompositor rendering.
Created attachment 189153 [details] Patch
Comment on attachment 189153 [details] Patch I feel the "Post" terminology is a QNXism, it should be possible to find a term that makes more sense from a WebKit perspective. The method will eventually call eglSwapBuffers (or a subrect swapping extension). But I guess "Swap" would be an EGLism. So LGTM.
I guess "Post" is strong in QNX land, but not exclusive to it. The EGL_NV_post_sub_buffer extension for instance adopted the same nomenclature for the same functionality after also considering "Present" or "Copy" as alternatives. In my understanding, "Swap" refers more to the concept of replacing the full buffer rather than presenting a portion of the buffer in the target window or parent container. I guess a "Post" will usually flush commands and swap surfaces like eglSwapBuffers() would, but at least the swapping part seems like it could be optional in some implementations and the focus is on propagating the contents to the screen or parent container, which is more the intention of this patch. Thanks for your input!
Comment on attachment 189153 [details] Patch Ok.
Comment on attachment 189153 [details] Patch Clearing flags on attachment: 189153 Committed r143610: <http://trac.webkit.org/changeset/143610>
All reviewed patches have been landed. Closing bug.