WebKit Bugzilla
Attachment 371051 Details for
Bug 198418
: REGRESSION(r244182): [CoordinatedGraphics] Related view doesn't receive graphic updates
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
wk-coord-graphics-display-id.diff (text/plain), 5.26 KB, created by
Carlos Garcia Campos
on 2019-05-31 05:32:38 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Carlos Garcia Campos
Created:
2019-05-31 05:32:38 PDT
Size:
5.26 KB
patch
obsolete
>diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3a3a06672dc..eea44fe16e4 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,21 @@ >+2019-05-31 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ REGRESSION(r244182): [CoordinatedGraphics] Related view doesn't receive graphic updates >+ https://bugs.webkit.org/show_bug.cgi?id=198418 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This is because we need a DisplayRefreshMonitor per drawing area, but the one from the first ThreradedCompositor >+ is always reused because they use the same display ID. >+ >+ * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: >+ (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Use a unique display ID derived from >+ WebPage's ID. >+ (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Use the primary display ID. >+ * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: >+ (WebKit::LayerTreeHost::LayerTreeHost): Get the current web page display ID instead of inventing one. >+ (WebKit::LayerTreeHost::setIsDiscardable): Do not change display ID. >+ > 2019-05-31 Carlos Garcia Campos <cgarcia@igalia.com> > > [GTK] WPERenderer: ensure we complete the last frame when leaving AC mode >diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp >index 90f74f2fdf3..072000e82c3 100644 >--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp >+++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp >@@ -544,6 +544,10 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay > m_exitCompositingTimer.stop(); > m_wantsToExitAcceleratedCompositingMode = false; > >+ // In order to ensure that we get a unique DisplayRefreshMonitor per-DrawingArea (necessary because ThreadedDisplayRefreshMonitor >+ // is driven by the ThreadedCompositor of the drawing area), give each page a unique DisplayID derived from WebPage's unique ID. >+ m_webPage.windowScreenDidChange(std::numeric_limits<uint32_t>::max() - m_webPage.pageID().toUInt64()); >+ > ASSERT(!m_layerTreeHost); > if (m_previousLayerTreeHost) { > m_layerTreeHost = WTFMove(m_previousLayerTreeHost); >@@ -597,6 +601,9 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() > m_previousLayerTreeHost->setLayerFlushSchedulingEnabled(false); > m_discardPreviousLayerTreeHostTimer.startOneShot(5_s); > >+ // Always use the primary display ID (0) when not in accelerated compositing mode. >+ m_webPage.windowScreenDidChange(0); >+ > m_dirtyRegion = m_webPage.bounds(); > > if (m_inUpdateBackingStoreState) >diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp >index 2cb82f7a55c..e894bd161f0 100644 >--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp >+++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp >@@ -34,6 +34,7 @@ > #include "DrawingArea.h" > #include "WebPage.h" > #include "WebPageProxyMessages.h" >+#include <WebCore/Chrome.h> > #include <WebCore/Frame.h> > #include <WebCore/FrameView.h> > #include <WebCore/PageOverlayController.h> >@@ -45,13 +46,6 @@ > namespace WebKit { > using namespace WebCore; > >-static const PlatformDisplayID primaryDisplayID = 0; >-#if PLATFORM(GTK) >-static const PlatformDisplayID compositingDisplayID = 1; >-#else >-static const PlatformDisplayID compositingDisplayID = primaryDisplayID; >-#endif >- > LayerTreeHost::LayerTreeHost(WebPage& webPage) > : m_webPage(webPage) > , m_coordinator(webPage.corePage(), *this) >@@ -83,12 +77,10 @@ LayerTreeHost::LayerTreeHost(WebPage& webPage) > if (m_surface->shouldPaintMirrored()) > paintFlags |= TextureMapper::PaintingMirrored; > >- m_compositor = ThreadedCompositor::create(m_compositorClient, m_compositorClient, compositingDisplayID, scaledSize, scaleFactor, ThreadedCompositor::ShouldDoFrameSync::Yes, paintFlags); >+ m_compositor = ThreadedCompositor::create(m_compositorClient, m_compositorClient, m_webPage.corePage()->chrome().displayID(), scaledSize, scaleFactor, ThreadedCompositor::ShouldDoFrameSync::Yes, paintFlags); > m_layerTreeContext.contextID = m_surface->surfaceID(); > } else >- m_compositor = ThreadedCompositor::create(m_compositorClient, m_compositorClient, compositingDisplayID, scaledSize, scaleFactor); >- >- m_webPage.windowScreenDidChange(compositingDisplayID); >+ m_compositor = ThreadedCompositor::create(m_compositorClient, m_compositorClient, m_webPage.corePage()->chrome().displayID(), scaledSize, scaleFactor); > > didChangeViewport(); > } >@@ -324,10 +316,8 @@ void LayerTreeHost::setIsDiscardable(bool discardable) > m_isDiscardable = discardable; > if (m_isDiscardable) { > m_discardableSyncActions = OptionSet<DiscardableSyncActions>(); >- m_webPage.windowScreenDidChange(primaryDisplayID); > return; > } >- m_webPage.windowScreenDidChange(compositingDisplayID); > > if (m_discardableSyncActions.isEmpty()) > return;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
zan
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198418
: 371051