OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/graphics/RecordingImageBufferSurface.h" | 5 #include "platform/graphics/RecordingImageBufferSurface.h" |
6 | 6 |
7 #include "platform/Histogram.h" | 7 #include "platform/Histogram.h" |
8 #include "platform/graphics/CanvasMetrics.h" | 8 #include "platform/graphics/CanvasMetrics.h" |
9 #include "platform/graphics/ExpensiveCanvasHeuristicParameters.h" | 9 #include "platform/graphics/ExpensiveCanvasHeuristicParameters.h" |
10 #include "platform/graphics/GraphicsContext.h" | 10 #include "platform/graphics/GraphicsContext.h" |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
221 if (!m_fallbackSurface) | 221 if (!m_fallbackSurface) |
222 fallBackToRasterCanvas(disableDeferralReasonToFallbackReason(reason)); | 222 fallBackToRasterCanvas(disableDeferralReasonToFallbackReason(reason)); |
223 } | 223 } |
224 | 224 |
225 sk_sp<PaintRecord> RecordingImageBufferSurface::getPicture() { | 225 sk_sp<PaintRecord> RecordingImageBufferSurface::getPicture() { |
226 if (m_fallbackSurface) | 226 if (m_fallbackSurface) |
227 return nullptr; | 227 return nullptr; |
228 | 228 |
229 FallbackReason fallbackReason = FallbackReasonUnknown; | 229 FallbackReason fallbackReason = FallbackReasonUnknown; |
230 bool canUsePicture = finalizeFrameInternal(&fallbackReason); | 230 bool canUsePicture = finalizeFrameInternal(&fallbackReason); |
231 m_imageBuffer->didFinalizeFrame(); | |
232 | 231 |
233 ASSERT(canUsePicture || m_fallbackFactory); | 232 ASSERT(canUsePicture || m_fallbackFactory); |
234 | 233 |
235 if (canUsePicture) { | 234 if (canUsePicture) { |
236 return m_previousFrame; | 235 return m_previousFrame; |
237 } | 236 } |
238 | 237 |
239 if (!m_fallbackSurface) | 238 if (!m_fallbackSurface) |
240 fallBackToRasterCanvas(fallbackReason); | 239 fallBackToRasterCanvas(fallbackReason); |
241 return nullptr; | 240 return nullptr; |
242 } | 241 } |
243 | 242 |
244 void RecordingImageBufferSurface::finalizeFrame(const FloatRect& dirtyRect) { | 243 void RecordingImageBufferSurface::finalizeFrame() { |
245 if (m_fallbackSurface) { | 244 if (m_fallbackSurface) { |
246 m_fallbackSurface->finalizeFrame(dirtyRect); | 245 m_fallbackSurface->finalizeFrame(); |
247 return; | 246 return; |
248 } | 247 } |
249 | 248 |
250 FallbackReason fallbackReason = FallbackReasonUnknown; | 249 FallbackReason fallbackReason = FallbackReasonUnknown; |
251 if (!finalizeFrameInternal(&fallbackReason)) | 250 if (!finalizeFrameInternal(&fallbackReason)) |
252 fallBackToRasterCanvas(fallbackReason); | 251 fallBackToRasterCanvas(fallbackReason); |
253 } | 252 } |
254 | 253 |
254 void RecordingImageBufferSurface::doPaintInvalidation( | |
255 const FloatRect& dirtyRect) { | |
256 if (m_fallbackSurface) { | |
257 m_fallbackSurface->doPaintInvalidation(dirtyRect); | |
258 return; | |
xlai (Olivia)
2017/02/08 17:58:40
no need "return".
Justin Novosad
2017/02/08 18:43:12
Done.
| |
259 } | |
260 } | |
261 | |
255 static RecordingImageBufferSurface::FallbackReason flushReasonToFallbackReason( | 262 static RecordingImageBufferSurface::FallbackReason flushReasonToFallbackReason( |
256 FlushReason reason) { | 263 FlushReason reason) { |
257 switch (reason) { | 264 switch (reason) { |
258 case FlushReasonUnknown: | 265 case FlushReasonUnknown: |
259 return RecordingImageBufferSurface::FallbackReasonUnknown; | 266 return RecordingImageBufferSurface::FallbackReasonUnknown; |
260 case FlushReasonInitialClear: | 267 case FlushReasonInitialClear: |
261 return RecordingImageBufferSurface::FallbackReasonFlushInitialClear; | 268 return RecordingImageBufferSurface::FallbackReasonFlushInitialClear; |
262 case FlushReasonDrawImageOfWebGL: | 269 case FlushReasonDrawImageOfWebGL: |
263 return RecordingImageBufferSurface:: | 270 return RecordingImageBufferSurface:: |
264 FallbackReasonFlushForDrawImageOfWebGL; | 271 FallbackReasonFlushForDrawImageOfWebGL; |
(...skipping 26 matching lines...) Expand all Loading... | |
291 m_currentFramePixelCount += pixelBounds.width() * pixelBounds.height(); | 298 m_currentFramePixelCount += pixelBounds.width() * pixelBounds.height(); |
292 } | 299 } |
293 | 300 |
294 bool RecordingImageBufferSurface::finalizeFrameInternal( | 301 bool RecordingImageBufferSurface::finalizeFrameInternal( |
295 FallbackReason* fallbackReason) { | 302 FallbackReason* fallbackReason) { |
296 CHECK(!m_fallbackSurface); | 303 CHECK(!m_fallbackSurface); |
297 CHECK(m_currentFrame); | 304 CHECK(m_currentFrame); |
298 ASSERT(m_currentFrame->getRecordingCanvas()); | 305 ASSERT(m_currentFrame->getRecordingCanvas()); |
299 ASSERT(fallbackReason); | 306 ASSERT(fallbackReason); |
300 ASSERT(*fallbackReason == FallbackReasonUnknown); | 307 ASSERT(*fallbackReason == FallbackReasonUnknown); |
301 | 308 if (!m_didRecordDrawCommandsInCurrentFrame) { |
302 if (!m_imageBuffer->isDirty()) { | |
303 if (!m_previousFrame) { | 309 if (!m_previousFrame) { |
304 // Create an initial blank frame | 310 // Create an initial blank frame |
305 m_previousFrame = m_currentFrame->finishRecordingAsPicture(); | 311 m_previousFrame = m_currentFrame->finishRecordingAsPicture(); |
306 initializeCurrentFrame(); | 312 initializeCurrentFrame(); |
307 } | 313 } |
308 CHECK(m_currentFrame); | 314 CHECK(m_currentFrame); |
309 return true; | 315 return true; |
310 } | 316 } |
311 | 317 |
312 if (!m_frameWasCleared) { | 318 if (!m_frameWasCleared) { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
400 } | 406 } |
401 | 407 |
402 void RecordingImageBufferSurface::setIsHidden(bool hidden) { | 408 void RecordingImageBufferSurface::setIsHidden(bool hidden) { |
403 if (m_fallbackSurface) | 409 if (m_fallbackSurface) |
404 m_fallbackSurface->setIsHidden(hidden); | 410 m_fallbackSurface->setIsHidden(hidden); |
405 else | 411 else |
406 ImageBufferSurface::setIsHidden(hidden); | 412 ImageBufferSurface::setIsHidden(hidden); |
407 } | 413 } |
408 | 414 |
409 } // namespace blink | 415 } // namespace blink |
OLD | NEW |