Changeset 246142 in webkit
- Timestamp:
- Jun 5, 2019 8:39:08 PM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r246138 r246142 1 2019-06-05 Said Abou-Hallawa <sabouhallawa@apple.com> 2 3 [Cocoa] REGRESSION(r244182): Inspector thinks CA commits can be nested 4 https://bugs.webkit.org/show_bug.cgi?id=198497 5 6 Reviewed by Simon Fraser. 7 8 WebInspecter should coalesce nested composites as one recorded composite. 9 This can be done by ensuring that we only process CA preCommit and postCommit 10 once per nested commits. 11 12 * inspector/InspectorController.cpp: 13 (WebCore::InspectorController::willComposite): 14 * inspector/InspectorController.h: 15 Export willComposite(). We want to call willComposite()/ didComposite() 16 from CA preCommit and postCommit handlers in flushLayers(). 17 18 * inspector/agents/InspectorTimelineAgent.cpp: 19 (WebCore::InspectorTimelineAgent::didComposite): 20 Unrelated change: didComposite() should not assert that we're in the middle 21 of a composite. Web Inspector may connect in the middle of a composite. 22 23 * page/FrameView.cpp: 24 (WebCore::FrameView::flushCompositingStateIncludingSubframes): 25 InspectorController::willComposite() will be called form CA preCommit 26 handler of flushLayers(). 27 1 28 2019-06-05 Myles C. Maxfield <mmaxfield@apple.com> 2 29 -
trunk/Source/WebCore/inspector/InspectorController.cpp
r244172 r246142 508 508 } 509 509 510 void InspectorController::willComposite(Frame& frame) 511 { 512 InspectorInstrumentation::willComposite(frame); 513 } 514 510 515 void InspectorController::didComposite(Frame& frame) 511 516 { -
trunk/Source/WebCore/inspector/InspectorController.h
r244172 r246142 98 98 WEBCORE_EXPORT void setIndicating(bool); 99 99 100 WEBCORE_EXPORT void willComposite(Frame&); 100 101 WEBCORE_EXPORT void didComposite(Frame&); 101 102 -
trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp
r244195 r246142 365 365 void InspectorTimelineAgent::didComposite() 366 366 { 367 ASSERT(m_startedComposite);368 367 didCompleteCurrentRecord(TimelineRecordType::Composite); 369 368 m_startedComposite = false; -
trunk/Source/WebCore/page/FrameView.cpp
r245823 r246142 1149 1149 bool FrameView::flushCompositingStateIncludingSubframes() 1150 1150 { 1151 #if PLATFORM(COCOA)1152 InspectorInstrumentation::willComposite(frame());1153 #endif1154 1155 1151 bool allFramesFlushed = flushCompositingStateForThisFrame(frame()); 1156 1152 -
trunk/Source/WebKit/ChangeLog
r246137 r246142 1 2019-06-05 Said Abou-Hallawa <sabouhallawa@apple.com> 2 3 [Cocoa] REGRESSION(r244182): Inspector thinks CA commits can be nested 4 https://bugs.webkit.org/show_bug.cgi?id=198497 5 6 Reviewed by Simon Fraser. 7 8 Call InspectorController::willComposite() from the CA preCommit handler 9 similar to the call to InspectorController::didComposite() in the CA 10 postCommit handler. Ensure these calls will be once for nested commits. 11 12 * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: 13 * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: 14 (WebKit::RemoteLayerTreeDrawingArea::addCommitHandlers): 15 (WebKit::RemoteLayerTreeDrawingArea::flushLayers): 16 * WebProcess/WebPage/WebPage.h: 17 (WebKit::WebPage::firstFlushAfterCommit const): 18 (WebKit::WebPage::setFirstFlushAfterCommit): 19 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: 20 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 21 (WebKit::TiledCoreAnimationDrawingArea::addCommitHandlers): 22 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): 23 1 24 2019-06-05 Alex Christensen <achristensen@webkit.org> 2 25 -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
r244291 r246142 115 115 void updateRootLayers(); 116 116 117 void flushInitialDeferredPaint();117 void addCommitHandlers(); 118 118 void flushLayers(); 119 119 -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
r245796 r246142 326 326 return true; 327 327 } 328 329 void RemoteLayerTreeDrawingArea::addCommitHandlers() 330 { 331 if (m_webPage.firstFlushAfterCommit()) 332 return; 333 334 [CATransaction addCommitHandler:[retainedPage = makeRefPtr(&m_webPage)] { 335 if (Page* corePage = retainedPage->corePage()) { 336 if (Frame* coreFrame = retainedPage->mainFrame()) 337 corePage->inspectorController().willComposite(*coreFrame); 338 } 339 } forPhase:kCATransactionPhasePreCommit]; 340 341 [CATransaction addCommitHandler:[retainedPage = makeRefPtr(&m_webPage)] { 342 if (Page* corePage = retainedPage->corePage()) { 343 if (Frame* coreFrame = retainedPage->mainFrame()) 344 corePage->inspectorController().didComposite(*coreFrame); 345 } 346 retainedPage->setFirstFlushAfterCommit(false); 347 } forPhase:kCATransactionPhasePostCommit]; 348 349 m_webPage.setFirstFlushAfterCommit(true); 350 } 328 351 329 352 void RemoteLayerTreeDrawingArea::flushLayers() … … 357 380 visibleRect.intersect(m_scrolledViewExposedRect.value()); 358 381 359 RefPtr<WebPage> protectedWebPage = &m_webPage; 360 [CATransaction addCommitHandler:[protectedWebPage] { 361 if (Page* corePage = protectedWebPage->corePage()) { 362 if (Frame* coreFrame = protectedWebPage->mainFrame()) 363 corePage->inspectorController().didComposite(*coreFrame); 364 } 365 } forPhase:kCATransactionPhasePostCommit]; 382 addCommitHandlers(); 366 383 367 384 if (m_nextFlushIsForImmediatePaint) -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r246116 r246142 1207 1207 void setUserIsInteracting(bool userIsInteracting) { m_userIsInteracting = userIsInteracting; } 1208 1208 1209 bool firstFlushAfterCommit() const { return m_firstFlushAfterCommit; } 1210 void setFirstFlushAfterCommit(bool f) { m_firstFlushAfterCommit = f; } 1211 1209 1212 private: 1210 1213 WebPage(WebCore::PageIdentifier, WebPageCreationParameters&&); … … 1934 1937 bool m_isSuspended { false }; 1935 1938 bool m_needsFontAttributes { false }; 1939 bool m_firstFlushAfterCommit { false }; 1936 1940 #if PLATFORM(COCOA) 1937 1941 WeakPtr<RemoteObjectRegistry> m_remoteObjectRegistry; -
trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h
r244633 r246142 89 89 bool addMilestonesToDispatch(OptionSet<WebCore::LayoutMilestone> paintMilestones) override; 90 90 91 void addCommitHandlers(); 91 92 enum class FlushType { Normal, TransientZoom }; 92 93 void flushLayers(FlushType = FlushType::Normal); -
trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r244633 r246142 432 432 } 433 433 434 void TiledCoreAnimationDrawingArea::addCommitHandlers() 435 { 436 if (m_webPage.firstFlushAfterCommit()) 437 return; 438 439 [CATransaction addCommitHandler:[retainedPage = makeRefPtr(&m_webPage)] { 440 if (Page* corePage = retainedPage->corePage()) { 441 if (Frame* coreFrame = retainedPage->mainFrame()) 442 corePage->inspectorController().willComposite(*coreFrame); 443 } 444 } forPhase:kCATransactionPhasePreCommit]; 445 446 [CATransaction addCommitHandler:[retainedPage = makeRefPtr(&m_webPage)] { 447 if (Page* corePage = retainedPage->corePage()) { 448 if (Frame* coreFrame = retainedPage->mainFrame()) 449 corePage->inspectorController().didComposite(*coreFrame); 450 } 451 if (auto drawingArea = static_cast<TiledCoreAnimationDrawingArea*>(retainedPage->drawingArea())) 452 drawingArea->sendPendingNewlyReachedPaintingMilestones(); 453 retainedPage->setFirstFlushAfterCommit(false); 454 } forPhase:kCATransactionPhasePostCommit]; 455 456 m_webPage.setFirstFlushAfterCommit(true); 457 } 458 434 459 void TiledCoreAnimationDrawingArea::flushLayers(FlushType flushType) 435 460 { … … 456 481 m_viewOverlayRootLayer->flushCompositingState(visibleRect); 457 482 458 RefPtr<WebPage> retainedPage = &m_webPage; 459 [CATransaction addCommitHandler:[retainedPage] { 460 if (Page* corePage = retainedPage->corePage()) { 461 if (Frame* coreFrame = retainedPage->mainFrame()) 462 corePage->inspectorController().didComposite(*coreFrame); 463 } 464 if (auto drawingArea = static_cast<TiledCoreAnimationDrawingArea*>(retainedPage->drawingArea())) 465 drawingArea->sendPendingNewlyReachedPaintingMilestones(); 466 } forPhase:kCATransactionPhasePostCommit]; 467 483 addCommitHandlers(); 484 468 485 bool didFlushAllFrames = m_webPage.mainFrameView()->flushCompositingStateIncludingSubframes(); 469 486
Note: See TracChangeset
for help on using the changeset viewer.