Changeset 186133 in webkit
- Timestamp:
- Jun 30, 2015, 2:45:55 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r186091 r186133 1 2015-06-30 Matt Baker <mattbaker@apple.com> 2 3 Web Inspector: Reduce rendering frames "Other" time by instrumenting compositing 4 https://bugs.webkit.org/show_bug.cgi?id=146168 5 6 Reviewed by Brian Burg. 7 8 * inspector/protocol/Timeline.json: 9 New timeline record type for compositing events. 10 1 11 2015-06-29 Dean Jackson <dino@apple.com> 2 12 -
trunk/Source/JavaScriptCore/inspector/protocol/Timeline.json
r182660 r186133 14 14 "Layout", 15 15 "Paint", 16 "Composite", 16 17 "RenderingFrame", 17 18 "ScrollLayer", -
trunk/Source/WebCore/ChangeLog
r186132 r186133 1 2015-06-30 Matt Baker <mattbaker@apple.com> 2 3 Web Inspector: Reduce rendering frames "Other" time by instrumenting compositing 4 https://bugs.webkit.org/show_bug.cgi?id=146168 5 6 Reviewed by Brian Burg. 7 8 Added Inspector instrumentation for measuring CoreAnimation compositing time. We mark the start of a composite 9 event when the LayerFlushScheduler triggers a scheduled layer flush. InspectorController now exports a function 10 for marking the end of the composite event, which should be called during the CA transaction post-commit phase 11 (based on platform support). Lacking platform support, the event is considered complete after CoreAnimation 12 runloop observers have run. 13 14 * inspector/InspectorController.cpp: 15 (WebCore::InspectorController::didComposite): 16 * inspector/InspectorController.h: 17 New export for instrumentation in WebKit2. 18 19 * inspector/InspectorInstrumentation.cpp: 20 (WebCore::InspectorInstrumentation::willCompositeImpl): 21 (WebCore::InspectorInstrumentation::didCompositeImpl): 22 * inspector/InspectorInstrumentation.h: 23 (WebCore::InspectorInstrumentation::willComposite): 24 (WebCore::InspectorInstrumentation::didComposite): 25 Plumbing for new instrumentation. 26 27 * inspector/InspectorTimelineAgent.cpp: 28 (WebCore::InspectorTimelineAgent::internalStart): 29 (WebCore::InspectorTimelineAgent::internalStop): 30 (WebCore::InspectorTimelineAgent::willComposite): 31 (WebCore::InspectorTimelineAgent::didComposite): 32 (WebCore::toProtocol): 33 * inspector/InspectorTimelineAgent.h: 34 New Composite event type and instrumentation. 35 36 * page/FrameView.cpp: 37 (WebCore::FrameView::flushCompositingStateIncludingSubframes): 38 Hook for start of compositing. 39 40 * platform/spi/cocoa/QuartzCoreSPI.h: 41 New header include and interface declaration. 42 1 43 2015-06-30 Beth Dakin <bdakin@apple.com> 2 44 -
trunk/Source/WebCore/inspector/InspectorController.cpp
r185784 r186133 454 454 } 455 455 456 void InspectorController::didComposite(Frame& frame) 457 { 458 InspectorInstrumentation::didComposite(frame); 459 } 460 456 461 } // namespace WebCore -
trunk/Source/WebCore/inspector/InspectorController.h
r185784 r186133 138 138 virtual Ref<WTF::Stopwatch> executionStopwatch() override; 139 139 140 WEBCORE_EXPORT void didComposite(Frame&); 141 140 142 private: 141 143 friend class InspectorInstrumentation; -
trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp
r182193 r186133 476 476 } 477 477 478 void InspectorInstrumentation::willCompositeImpl(InstrumentingAgents& instrumentingAgents, Frame& frame) 479 { 480 if (InspectorTimelineAgent* timelineAgent = instrumentingAgents.inspectorTimelineAgent()) 481 timelineAgent->willComposite(frame); 482 } 483 484 void InspectorInstrumentation::didCompositeImpl(InstrumentingAgents& instrumentingAgents) 485 { 486 if (InspectorTimelineAgent* timelineAgent = instrumentingAgents.inspectorTimelineAgent()) 487 timelineAgent->didComposite(); 488 } 489 478 490 void InspectorInstrumentation::willPaintImpl(InstrumentingAgents& instrumentingAgents, RenderObject* renderer) 479 491 { -
trunk/Source/WebCore/inspector/InspectorInstrumentation.h
r182193 r186133 165 165 static void willScrollLayer(Frame&); 166 166 static void didScrollLayer(Frame&); 167 static void willComposite(Frame&); 168 static void didComposite(Frame&); 167 169 static void willPaint(RenderObject*); 168 170 static void didPaint(RenderObject*, const LayoutRect&); … … 343 345 static void willScrollLayerImpl(InstrumentingAgents&, Frame&); 344 346 static void didScrollLayerImpl(InstrumentingAgents&); 347 static void willCompositeImpl(InstrumentingAgents&, Frame&); 348 static void didCompositeImpl(InstrumentingAgents&); 345 349 static void willPaintImpl(InstrumentingAgents&, RenderObject*); 346 350 static void didPaintImpl(InstrumentingAgents&, RenderObject*, const LayoutRect&); … … 815 819 } 816 820 821 inline void InspectorInstrumentation::willComposite(Frame& frame) 822 { 823 FAST_RETURN_IF_NO_FRONTENDS(void()); 824 if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(&frame)) 825 willCompositeImpl(*instrumentingAgents, frame); 826 } 827 828 inline void InspectorInstrumentation::didComposite(Frame& frame) 829 { 830 FAST_RETURN_IF_NO_FRONTENDS(void()); 831 if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(&frame)) 832 didCompositeImpl(*instrumentingAgents); 833 } 834 817 835 inline void InspectorInstrumentation::willPaint(RenderObject* renderer) 818 836 { -
trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp
r185777 r186133 171 171 ASSERT(m_runLoopNestingLevel > 0); 172 172 m_runLoopNestingLevel--; 173 if (!m_runLoopNestingLevel) 174 didCompleteCurrentRecord(TimelineRecordType::RenderingFrame); 173 if (m_runLoopNestingLevel) 174 return; 175 176 if (m_startedComposite) 177 didComposite(); 178 179 didCompleteCurrentRecord(TimelineRecordType::RenderingFrame); 175 180 }); 176 181 … … 217 222 218 223 m_enabled = false; 224 m_startedComposite = false; 219 225 220 226 if (m_frontendDispatcher) … … 398 404 { 399 405 didCompleteCurrentRecord(TimelineRecordType::RecalculateStyles); 406 } 407 408 void InspectorTimelineAgent::willComposite(Frame& frame) 409 { 410 ASSERT(!m_startedComposite); 411 pushCurrentRecord(InspectorObject::create(), TimelineRecordType::Composite, true, &frame); 412 m_startedComposite = true; 413 } 414 415 void InspectorTimelineAgent::didComposite() 416 { 417 ASSERT(m_startedComposite); 418 didCompleteCurrentRecord(TimelineRecordType::Composite); 419 m_startedComposite = false; 400 420 } 401 421 … … 608 628 case TimelineRecordType::Paint: 609 629 return Inspector::Protocol::Timeline::EventType::Paint; 630 case TimelineRecordType::Composite: 631 return Inspector::Protocol::Timeline::EventType::Composite; 610 632 case TimelineRecordType::RenderingFrame: 611 633 return Inspector::Protocol::Timeline::EventType::RenderingFrame; … … 721 743 : InspectorAgentBase(ASCIILiteral("Timeline"), instrumentingAgents) 722 744 , m_pageAgent(pageAgent) 723 , m_scriptDebugServer(nullptr)724 , m_id(1)725 , m_callStackDepth(0)726 , m_maxCallStackDepth(5)727 745 , m_inspectorType(type) 728 746 , m_client(client) 729 , m_enabled(false)730 , m_enabledFromFrontend(false)731 , m_runLoopNestingLevel(0)732 747 { 733 748 } -
trunk/Source/WebCore/inspector/InspectorTimelineAgent.h
r185777 r186133 73 73 Layout, 74 74 Paint, 75 Composite, 75 76 RenderingFrame, 76 77 ScrollLayer, … … 156 157 void willDispatchXHRLoadEvent(const String&, Frame*); 157 158 void didDispatchXHRLoadEvent(); 159 void willComposite(Frame&); 160 void didComposite(); 158 161 void willPaint(Frame&); 159 162 void didPaint(RenderObject*, const LayoutRect&); … … 230 233 231 234 InspectorPageAgent* m_pageAgent; 232 PageScriptDebugServer* m_scriptDebugServer ;235 PageScriptDebugServer* m_scriptDebugServer { nullptr }; 233 236 234 237 std::unique_ptr<Inspector::TimelineFrontendDispatcher> m_frontendDispatcher; … … 237 240 Vector<TimelineRecordEntry> m_recordStack; 238 241 239 int m_id ;240 int m_callStackDepth ;241 int m_maxCallStackDepth ;242 int m_id { 1 }; 243 int m_callStackDepth { 0 }; 244 int m_maxCallStackDepth { 5 }; 242 245 InspectorType m_inspectorType; 243 246 InspectorClient* m_client; … … 245 248 Vector<TimelineRecordEntry> m_pendingConsoleProfileRecords; 246 249 247 bool m_enabled ;248 bool m_enabledFromFrontend ;250 bool m_enabled { false }; 251 bool m_enabledFromFrontend { false }; 249 252 250 253 #if PLATFORM(COCOA) … … 252 255 std::unique_ptr<WebCore::RunLoopObserver> m_frameStopObserver; 253 256 #endif 254 int m_runLoopNestingLevel; 257 int m_runLoopNestingLevel { 0 }; 258 bool m_startedComposite { false }; 255 259 }; 256 260 -
trunk/Source/WebCore/page/FrameView.cpp
r185966 r186133 1083 1083 bool FrameView::flushCompositingStateIncludingSubframes() 1084 1084 { 1085 InspectorInstrumentation::willComposite(frame()); 1086 1085 1087 bool allFramesFlushed = flushCompositingStateForThisFrame(&frame()); 1086 1088 -
trunk/Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h
r183997 r186133 46 46 #import <QuartzCore/CAFilter.h> 47 47 #import <QuartzCore/CATiledLayerPrivate.h> 48 #import <QuartzCore/CATransactionPrivate.h> 48 49 49 50 #ifdef __cplusplus … … 113 114 @property (copy) NSString *name; 114 115 @end 116 117 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 118 typedef enum { 119 kCATransactionPhasePreLayout, 120 kCATransactionPhasePreCommit, 121 kCATransactionPhasePostCommit, 122 } CATransactionPhase; 123 124 @interface CATransaction (Details) 125 + (void)addCommitHandler:(void(^)(void))block forPhase:(CATransactionPhase)phase; 126 @end 127 #endif 115 128 #endif // __OBJC__ 116 129 -
trunk/Source/WebInspectorUI/ChangeLog
r186120 r186133 1 2015-06-30 Matt Baker <mattbaker@apple.com> 2 3 Web Inspector: Reduce rendering frames "Other" time by instrumenting compositing 4 https://bugs.webkit.org/show_bug.cgi?id=146168 5 6 Reviewed by Brian Burg. 7 8 * Localizations/en.lproj/localizedStrings.js: 9 * UserInterface/Controllers/TimelineManager.js: 10 (WebInspector.TimelineManager.prototype._processRecord): 11 Added handling for new Composite record type. Paint records with a parent Composite record 12 are flagged to simplify processing after the event hierarchy is unpacked. 13 14 * UserInterface/Images/TimelineRecordComposite.svg: Added. 15 New composite record icon. 16 17 * UserInterface/Models/LayoutTimelineRecord.js: 18 (WebInspector.LayoutTimelineRecord): 19 (WebInspector.LayoutTimelineRecord.displayNameForEventType): 20 (WebInspector.LayoutTimelineRecord.prototype.get duringComposite): Added 21 Composite record support. 22 23 * UserInterface/Models/RenderingFrameTimelineRecord.js: 24 (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask.get validRecordForTaskType): 25 Add compositing time when bucketing runloop tasks, ignoring Paint events that are 26 contained within a Composite event. 27 28 * UserInterface/Views/LayoutTimelineOverviewGraph.js: 29 (WebInspector.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded): 30 Add Composite records to paint timeline row. 31 32 * UserInterface/Views/RenderingFrameTimelineView.js: 33 (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords): 34 Small unrelated fix. 35 36 * UserInterface/Views/TimelineIcons.css: 37 (.composite-record .icon): 38 * UserInterface/Views/TimelineRecordBar.css: 39 (.timeline-record-bar.timeline-record-type-layout.layout-timeline-record-composite > .segment): 40 * UserInterface/Views/TimelineRecordTreeElement.js: 41 (WebInspector.TimelineRecordTreeElement): 42 New styles and tree element icon. 43 1 44 2015-06-30 Joseph Pecoraro <pecoraro@apple.com> 2 45 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r185933 r186133 109 109 localizedStrings["Comment"] = "Comment"; 110 110 localizedStrings["Comment All Properties"] = "Comment All Properties"; 111 localizedStrings["Composite"] = "Composite"; 111 112 localizedStrings["Compressed"] = "Compressed"; 112 113 localizedStrings["Compression"] = "Compression"; -
trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js
r186098 r186133 263 263 // COMPATIBILITY (iOS 6): Paint records data contained x, y, width, height properties. This became a quad "clip". 264 264 var quad = recordPayload.data.clip ? new WebInspector.Quad(recordPayload.data.clip) : null; 265 var duringComposite = recordPayload.__duringComposite || false; 265 266 if (quad) 266 return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Paint, startTime, endTime, callFrames, sourceCodeLocation, null, null, quad.width, quad.height, quad );267 return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Paint, startTime, endTime, callFrames, sourceCodeLocation, null, null, quad.width, quad.height, quad, duringComposite); 267 268 else 268 return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Paint, startTime, endTime, callFrames, sourceCodeLocation, recordPayload.data.x, recordPayload.data.y, recordPayload.data.width, recordPayload.data.height); 269 return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Paint, startTime, endTime, callFrames, sourceCodeLocation, recordPayload.data.x, recordPayload.data.y, recordPayload.data.width, recordPayload.data.height, null, duringComposite); 270 271 case TimelineAgent.EventType.Composite: 272 recordPayload.children.forEach(function(childRecordPayload) { 273 console.assert(childRecordPayload.type === TimelineAgent.EventType.Paint, childRecordPayload.type); 274 childRecordPayload.__duringComposite = true; 275 }); 276 return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Composite, startTime, endTime, callFrames, sourceCodeLocation); 269 277 270 278 case TimelineAgent.EventType.RenderingFrame: -
trunk/Source/WebInspectorUI/UserInterface/Models/LayoutTimelineRecord.js
r181769 r186133 26 26 WebInspector.LayoutTimelineRecord = class LayoutTimelineRecord extends WebInspector.TimelineRecord 27 27 { 28 constructor(eventType, startTime, endTime, callFrames, sourceCodeLocation, x, y, width, height, quad )28 constructor(eventType, startTime, endTime, callFrames, sourceCodeLocation, x, y, width, height, quad, duringComposite) 29 29 { 30 30 super(WebInspector.TimelineRecord.Type.Layout, startTime, endTime, callFrames, sourceCodeLocation); … … 41 41 this._height = typeof height === "number" ? height : NaN; 42 42 this._quad = quad instanceof WebInspector.Quad ? quad : null; 43 this._duringComposite = duringComposite || false; 43 44 } 44 45 … … 60 61 case WebInspector.LayoutTimelineRecord.EventType.Paint: 61 62 return WebInspector.UIString("Paint"); 63 case WebInspector.LayoutTimelineRecord.EventType.Composite: 64 return WebInspector.UIString("Composite"); 62 65 } 63 66 } … … 107 110 } 108 111 112 get duringComposite() 113 { 114 return this._duringComposite; 115 } 116 109 117 saveIdentityToCookie(cookie) 110 118 { … … 121 129 ForcedLayout: "layout-timeline-record-forced-layout", 122 130 Layout: "layout-timeline-record-layout", 123 Paint: "layout-timeline-record-paint" 131 Paint: "layout-timeline-record-paint", 132 Composite: "layout-timeline-record-composite" 124 133 }; 125 134 -
trunk/Source/WebInspectorUI/UserInterface/Models/RenderingFrameTimelineRecord.js
r185455 r186133 84 84 return record.type === WebInspector.TimelineRecord.Type.Script; 85 85 case WebInspector.RenderingFrameTimelineRecord.TaskType.Layout: 86 return record.type === WebInspector.TimelineRecord.Type.Layout && record.eventType !== WebInspector.LayoutTimelineRecord.EventType.Paint ;86 return record.type === WebInspector.TimelineRecord.Type.Layout && record.eventType !== WebInspector.LayoutTimelineRecord.EventType.Paint && record.eventType !== WebInspector.LayoutTimelineRecord.EventType.Composite; 87 87 case WebInspector.RenderingFrameTimelineRecord.TaskType.Paint: 88 return record. type === WebInspector.TimelineRecord.Type.Layout && record.eventType === WebInspector.LayoutTimelineRecord.EventType.Paint;88 return record.eventType === WebInspector.LayoutTimelineRecord.EventType.Paint || record.eventType === WebInspector.LayoutTimelineRecord.EventType.Composite; 89 89 default: 90 90 console.error("Unsupported task type: " + taskType); … … 107 107 }, 0); 108 108 109 // Time spent in layout events which were synchronously triggered from JavaScript must be deducted from the110 // rendering frame's script duration, to prevent the time from being counted twice.111 109 if (taskType === WebInspector.RenderingFrameTimelineRecord.TaskType.Script) { 110 // Layout events synchronously triggered from JavaScript must be subtracted from the total 111 // script time, to prevent the time from being counted twice. 112 112 duration -= this._children.reduce(function(previousValue, currentValue) { 113 113 if (currentValue.type === WebInspector.TimelineRecord.Type.Layout && (currentValue.sourceCodeLocation || currentValue.callFrames)) 114 114 return previousValue + currentValue.duration; 115 115 return previousValue; 116 }, 0); 117 } else if (taskType === WebInspector.RenderingFrameTimelineRecord.TaskType.Paint) { 118 // Paint events triggered during a Composite event must be subtracted from the total painting time, 119 // since the compositing time already includes time spent in these Paint events. 120 var paintRecords = this._children.filter(function(record) { return record.eventType === WebInspector.LayoutTimelineRecord.EventType.Paint; }); 121 duration -= paintRecords.reduce(function(previousValue, currentValue) { 122 return currentValue.duringComposite ? previousValue + currentValue.duration : previousValue; 116 123 }, 0); 117 124 } -
trunk/Source/WebInspectorUI/UserInterface/Views/LayoutTimelineOverviewGraph.js
r185875 r186133 106 106 console.assert(layoutTimelineRecord instanceof WebInspector.LayoutTimelineRecord); 107 107 108 if (layoutTimelineRecord.eventType === WebInspector.LayoutTimelineRecord.EventType.Paint )108 if (layoutTimelineRecord.eventType === WebInspector.LayoutTimelineRecord.EventType.Paint || layoutTimelineRecord.eventType === WebInspector.LayoutTimelineRecord.EventType.Composite) 109 109 this._timelinePaintRecordRow.records.push(layoutTimelineRecord); 110 110 else -
trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js
r185455 r186133 226 226 this._dataGrid.addRowInSortOrder(layoutTreeElement, layoutDataGridNode, treeElement); 227 227 } else if (childRecord.type === WebInspector.TimelineRecord.Type.Script) { 228 var rootNodes = []; 228 229 if (childRecord.profile) { 229 230 // FIXME: Support using the bottom-up tree once it is implemented. -
trunk/Source/WebInspectorUI/UserInterface/Views/TimelineIcons.css
r183579 r186133 76 76 } 77 77 78 .composite-record .icon { 79 content: url(../Images/TimelineRecordComposite.svg); 80 } 81 78 82 .rendering-frame-record .icon { 79 83 content: url(../Images/TimelineRecordRenderingFrame.svg); -
trunk/Source/WebInspectorUI/UserInterface/Views/TimelineRecordBar.css
r185875 r186133 88 88 } 89 89 90 .timeline-record-bar.timeline-record-type-layout.layout-timeline-record-paint > .segment { 90 91 .timeline-record-bar.timeline-record-type-layout.layout-timeline-record-paint > .segment, 92 .timeline-record-bar.timeline-record-type-layout.layout-timeline-record-composite > .segment { 91 93 background-color: rgb(176, 204, 105); 92 94 border-color: rgb(152, 188, 77); -
trunk/Source/WebInspectorUI/UserInterface/Views/TimelineRecordTreeElement.js
r183821 r186133 62 62 case WebInspector.LayoutTimelineRecord.EventType.Paint: 63 63 iconStyleClass = WebInspector.TimelineRecordTreeElement.PaintRecordIconStyleClass; 64 break; 65 case WebInspector.LayoutTimelineRecord.EventType.Composite: 66 iconStyleClass = WebInspector.TimelineRecordTreeElement.CompositeRecordIconStyleClass; 64 67 break; 65 68 default: … … 158 161 WebInspector.TimelineRecordTreeElement.LayoutRecordIconStyleClass = "layout-record"; 159 162 WebInspector.TimelineRecordTreeElement.PaintRecordIconStyleClass = "paint-record"; 163 WebInspector.TimelineRecordTreeElement.CompositeRecordIconStyleClass = "composite-record"; 160 164 WebInspector.TimelineRecordTreeElement.RenderingFrameRecordIconStyleClass = "rendering-frame-record"; 161 165 WebInspector.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass = "evaluated-record"; -
trunk/Source/WebKit2/ChangeLog
r186132 r186133 1 2015-06-30 Matt Baker <mattbaker@apple.com> 2 3 Web Inspector: Reduce rendering frames "Other" time by instrumenting compositing 4 https://bugs.webkit.org/show_bug.cgi?id=146168 5 6 Reviewed by Brian Burg. 7 8 * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: 9 (WebKit::RemoteLayerTreeDrawingArea::flushLayers): 10 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 11 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): 12 Added CA transaction post-commit handlers to instrument end of composite. 13 1 14 2015-06-30 Beth Dakin <bdakin@apple.com> 2 15 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm
r184947 r186133 41 41 #import <WebCore/Frame.h> 42 42 #import <WebCore/FrameView.h> 43 #import <WebCore/InspectorController.h> 43 44 #import <WebCore/MainFrame.h> 44 45 #import <WebCore/PageOverlayController.h> 46 #import <WebCore/QuartzCoreSPI.h> 45 47 #import <WebCore/RenderLayerCompositor.h> 46 48 #import <WebCore/RenderView.h> … … 360 362 visibleRect.intersect(m_scrolledExposedRect); 361 363 364 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 365 [CATransaction addCommitHandler:^{ 366 m_webPage.corePage()->inspectorController().didComposite(m_webPage.mainFrameView()->frame()); 367 } forPhase:kCATransactionPhasePostCommit]; 368 #endif 369 362 370 m_webPage.mainFrameView()->flushCompositingStateIncludingSubframes(); 363 371 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r186045 r186133 44 44 #import <WebCore/GraphicsContext.h> 45 45 #import <WebCore/GraphicsLayerCA.h> 46 #import <WebCore/InspectorController.h> 46 47 #import <WebCore/MachSendRight.h> 47 48 #import <WebCore/MainFrame.h> 48 49 #import <WebCore/Page.h> 49 50 #import <WebCore/PlatformCAAnimationCocoa.h> 51 #import <WebCore/QuartzCoreSPI.h> 50 52 #import <WebCore/RenderLayerBacking.h> 51 53 #import <WebCore/RenderLayerCompositor.h> … … 389 391 m_viewOverlayRootLayer->flushCompositingState(visibleRect); 390 392 393 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 394 [CATransaction addCommitHandler:^{ 395 m_webPage.corePage()->inspectorController().didComposite(m_webPage.mainFrameView()->frame()); 396 } forPhase:kCATransactionPhasePostCommit]; 397 #endif 398 391 399 bool returnValue = m_webPage.mainFrameView()->flushCompositingStateIncludingSubframes(); 392 400 #if ENABLE(ASYNC_SCROLLING)
Note:
See TracChangeset
for help on using the changeset viewer.