Changeset 245957 in webkit
- Timestamp:
- May 31, 2019 1:17:39 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r245956 r245957 1 2019-05-31 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] WPERenderer: ensure we complete the last frame when leaving AC mode 4 https://bugs.webkit.org/show_bug.cgi?id=198372 5 6 Reviewed by Michael Catanzaro. 7 8 It can happen that we leave AC mode after a new image is received from the web process but before it's 9 committed. It can also happen that we receive a new image from the web process right after we have left AC 10 mode. In both cases we need to complete the frame to ensure we don't leave the wayland compositor waiting 11 forever for a frame to be completed. 12 13 * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: 14 (WebKit::AcceleratedBackingStoreWayland::update): Complete any pending image when a new surface is used. 15 (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Complete the given image and return early if we already 16 left AC mode. 17 * UIProcess/gtk/AcceleratedBackingStoreWayland.h: 18 1 19 2019-05-31 Carlos Garcia Campos <cgarcia@igalia.com> 2 20 -
trunk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp
r245955 r245957 29 29 #if PLATFORM(WAYLAND) && USE(EGL) 30 30 31 #include "LayerTreeContext.h" 31 32 #include "WebPageProxy.h" 32 33 // These includes need to be in this order because wayland-egl.h defines WL_EGL_PLATFORM … … 182 183 183 184 #if USE(WPE_RENDERER) 185 void AcceleratedBackingStoreWayland::update(const LayerTreeContext& context) 186 { 187 if (m_surfaceID == context.contextID) 188 return; 189 190 m_surfaceID = context.contextID; 191 if (m_pendingImage) { 192 wpe_view_backend_exportable_fdo_dispatch_frame_complete(m_exportable); 193 wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, m_pendingImage); 194 m_pendingImage = nullptr; 195 } 196 } 197 184 198 int AcceleratedBackingStoreWayland::renderHostFileDescriptor() 185 199 { … … 189 203 void AcceleratedBackingStoreWayland::displayBuffer(struct wpe_fdo_egl_exported_image* image) 190 204 { 205 if (!m_surfaceID) { 206 wpe_view_backend_exportable_fdo_dispatch_frame_complete(m_exportable); 207 wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, image); 208 return; 209 } 210 191 211 if (!m_viewTexture) { 192 212 if (!makeContextCurrent()) -
trunk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.h
r245807 r245957 67 67 bool makeContextCurrent() override; 68 68 #if USE(WPE_RENDERER) 69 void update(const LayerTreeContext&) override; 69 70 int renderHostFileDescriptor() override; 70 71 #endif … … 79 80 #if USE(WPE_RENDERER) 80 81 struct wpe_view_backend_exportable_fdo* m_exportable { nullptr }; 82 uint64_t m_surfaceID { 0 }; 81 83 unsigned m_viewTexture { 0 }; 82 84 struct wpe_fdo_egl_exported_image* m_committedImage { nullptr };
Note: See TracChangeset
for help on using the changeset viewer.