Changeset 240663 in webkit
- Timestamp:
- Jan 29, 2019 10:18:52 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r240662 r240663 1 2019-01-29 Antti Koivisto <antti@apple.com> 2 3 REGRESSION (PSON): Flash on link navigation on Mac 4 https://bugs.webkit.org/show_bug.cgi?id=193961 5 <rdar://problem/47482507> 6 7 Reviewed by Chris Dumez. 8 9 The target page sends EnterAcceleratedCompositingMode message too early, before we have a valid layer tree. 10 11 * WebProcess/WebPage/DrawingArea.h: 12 (WebKit::DrawingArea::attach): Deleted. 13 14 Not needed anymore. 15 16 * WebProcess/WebPage/WebPage.cpp: 17 (WebKit::WebPage::reinitializeWebPage): 18 (WebKit::WebPage::didCompletePageTransition): 19 (WebKit::m_shouldAttachDrawingAreaOnPageTransition): Deleted. 20 21 Move message sending logic fully to TiledCoreAnimationDrawingArea. 22 Unfreezing the layer tree is sufficient to trigger the message. 23 24 * WebProcess/WebPage/WebPage.h: 25 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: 26 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 27 (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): 28 29 There is no need to treat process swap case differently. 30 31 (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded): 32 33 Send this after the first successful layer flush with the root layer set. 34 35 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): 36 (WebKit::TiledCoreAnimationDrawingArea::attach): Deleted. 37 1 38 2019-01-29 Timothy Hatcher <timothy@apple.com> 2 39 -
trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h
r239427 r240663 150 150 #endif 151 151 152 virtual void attach() { };153 154 152 protected: 155 153 DrawingArea(DrawingAreaType, WebPage&); -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r240628 r240663 402 402 , m_overrideContentSecurityPolicy { parameters.overrideContentSecurityPolicy } 403 403 , m_cpuLimit(parameters.cpuLimit) 404 #if PLATFORM(MAC)405 , m_shouldAttachDrawingAreaOnPageTransition(parameters.isProcessSwap)406 #endif407 404 { 408 405 ASSERT(m_pageID); … … 701 698 m_drawingArea->updatePreferences(parameters.store); 702 699 m_drawingArea->setPaintingEnabled(true); 703 #if PLATFORM(MAC)704 m_shouldAttachDrawingAreaOnPageTransition = parameters.isProcessSwap;705 #endif706 700 unfreezeLayerTree(LayerTreeFreezeReason::PageSuspended); 707 701 } … … 3100 3094 if (!isInitialEmptyDocument) 3101 3095 unfreezeLayerTree(LayerTreeFreezeReason::ProcessSwap); 3102 3103 #if PLATFORM(MAC)3104 if (m_shouldAttachDrawingAreaOnPageTransition && !isInitialEmptyDocument) {3105 m_shouldAttachDrawingAreaOnPageTransition = false;3106 // Unfreezing the layer tree above schedules a layer flush so we delay attaching the drawing area3107 // after the next event loop iteration.3108 RunLoop::main().dispatch([this, weakThis = makeWeakPtr(*this)] {3109 if (weakThis && m_drawingArea)3110 m_drawingArea->attach();3111 });3112 }3113 #endif3114 3096 } 3115 3097 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r240628 r240663 1806 1806 bool m_isSuspended { false }; 1807 1807 bool m_needsFontAttributes { false }; 1808 #if PLATFORM(MAC)1809 bool m_shouldAttachDrawingAreaOnPageTransition { false };1810 #endif1811 1808 }; 1812 1809 -
trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h
r239427 r240663 50 50 class LayerHostingContext; 51 51 52 class TiledCoreAnimationDrawingArea : public DrawingArea {52 class TiledCoreAnimationDrawingArea : public DrawingArea, public CanMakeWeakPtr<TiledCoreAnimationDrawingArea> { 53 53 public: 54 54 TiledCoreAnimationDrawingArea(WebPage&, const WebPageCreationParameters&); … … 103 103 void setShouldScaleViewToFitDocument(bool) override; 104 104 105 void attach() override;105 void sendEnterAcceleratedCompositingModeIfNeeded(); 106 106 107 107 void adjustTransientZoom(double scale, WebCore::FloatPoint origin) override; … … 178 178 bool m_isThrottlingLayerFlushes { false }; 179 179 bool m_isLayerFlushThrottlingTemporarilyDisabledForInteraction { false }; 180 bool m_needsSendEnterAcceleratedCompositingMode { true }; 180 181 181 182 WebCore::Timer m_layerFlushThrottlingTimer; -
trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r240046 r240663 97 97 updateLayerHostingContext(); 98 98 setColorSpace(parameters.colorSpace); 99 100 if (!parameters.isProcessSwap)101 attach();102 99 } 103 100 … … 107 104 } 108 105 109 void TiledCoreAnimationDrawingArea::attach() 110 { 111 LayerTreeContext layerTreeContext; 112 layerTreeContext.contextID = m_layerHostingContext->contextID(); 113 m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext)); 106 void TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded() 107 { 108 if (!m_rootLayer) 109 return; 110 111 if (!m_needsSendEnterAcceleratedCompositingMode) 112 return; 113 m_needsSendEnterAcceleratedCompositingMode = false; 114 115 // Let the first commit complete before sending. 116 RunLoop::main().dispatch([this, weakThis = makeWeakPtr(*this)] { 117 if (!weakThis) 118 return; 119 LayerTreeContext layerTreeContext; 120 layerTreeContext.contextID = m_layerHostingContext->contextID(); 121 m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext)); 122 }); 114 123 } 115 124 … … 503 512 } 504 513 505 if (didFlushAllFrames) 514 if (didFlushAllFrames) { 515 sendEnterAcceleratedCompositingModeIfNeeded(); 506 516 invalidateLayerFlushRunLoopObserver(); 517 } 507 518 508 519 if (m_isThrottlingLayerFlushes)
Note: See TracChangeset
for help on using the changeset viewer.