Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp

Issue 2290903002: Change (Pass)RefPtr<SkXxx> into sk_sp<SkXxx>. (Closed)
Patch Set: Rebasing... Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 80 }
81 81
82 DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, canvasFallbackHistogra m, new EnumerationHistogram("Canvas.DisplayListFallbackReason", FallbackReasonCo unt)); 82 DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, canvasFallbackHistogra m, new EnumerationHistogram("Canvas.DisplayListFallbackReason", FallbackReasonCo unt));
83 canvasFallbackHistogram.count(reason); 83 canvasFallbackHistogram.count(reason);
84 84
85 m_fallbackSurface = m_fallbackFactory->createSurface(size(), getOpacityMode( ), colorSpace()); 85 m_fallbackSurface = m_fallbackFactory->createSurface(size(), getOpacityMode( ), colorSpace());
86 m_fallbackSurface->setImageBuffer(m_imageBuffer); 86 m_fallbackSurface->setImageBuffer(m_imageBuffer);
87 87
88 if (m_previousFrame) { 88 if (m_previousFrame) {
89 m_previousFrame->playback(m_fallbackSurface->canvas()); 89 m_previousFrame->playback(m_fallbackSurface->canvas());
90 m_previousFrame.clear(); 90 m_previousFrame.reset();
91 } 91 }
92 92
93 if (m_currentFrame) { 93 if (m_currentFrame) {
94 m_currentFrame->finishRecordingAsPicture()->playback(m_fallbackSurface-> canvas()); 94 m_currentFrame->finishRecordingAsPicture()->playback(m_fallbackSurface-> canvas());
95 m_currentFrame.reset(); 95 m_currentFrame.reset();
96 } 96 }
97 97
98 if (m_imageBuffer) { 98 if (m_imageBuffer) {
99 m_imageBuffer->resetCanvas(m_fallbackSurface->canvas()); 99 m_imageBuffer->resetCanvas(m_fallbackSurface->canvas());
100 } 100 }
(...skipping 28 matching lines...) Expand all
129 return RecordingImageBufferSurface::FallbackReasonSnapshotForUnitTests; 129 return RecordingImageBufferSurface::FallbackReasonSnapshotForUnitTests;
130 case SnapshotReasonGetCopiedImage: 130 case SnapshotReasonGetCopiedImage:
131 return RecordingImageBufferSurface::FallbackReasonSnapshotGetCopiedImage ; 131 return RecordingImageBufferSurface::FallbackReasonSnapshotGetCopiedImage ;
132 case SnapshotReasonWebGLDrawImageIntoBuffer: 132 case SnapshotReasonWebGLDrawImageIntoBuffer:
133 return RecordingImageBufferSurface::FallbackReasonSnapshotWebGLDrawImage IntoBuffer; 133 return RecordingImageBufferSurface::FallbackReasonSnapshotWebGLDrawImage IntoBuffer;
134 } 134 }
135 ASSERT_NOT_REACHED(); 135 ASSERT_NOT_REACHED();
136 return RecordingImageBufferSurface::FallbackReasonUnknown; 136 return RecordingImageBufferSurface::FallbackReasonUnknown;
137 } 137 }
138 138
139 PassRefPtr<SkImage> RecordingImageBufferSurface::newImageSnapshot(AccelerationHi nt hint, SnapshotReason reason) 139 sk_sp<SkImage> RecordingImageBufferSurface::newImageSnapshot(AccelerationHint hi nt, SnapshotReason reason)
140 { 140 {
141 if (!m_fallbackSurface) 141 if (!m_fallbackSurface)
142 fallBackToRasterCanvas(snapshotReasonToFallbackReason(reason)); 142 fallBackToRasterCanvas(snapshotReasonToFallbackReason(reason));
143 return m_fallbackSurface->newImageSnapshot(hint, reason); 143 return m_fallbackSurface->newImageSnapshot(hint, reason);
144 } 144 }
145 145
146 SkCanvas* RecordingImageBufferSurface::canvas() 146 SkCanvas* RecordingImageBufferSurface::canvas()
147 { 147 {
148 if (m_fallbackSurface) 148 if (m_fallbackSurface)
149 return m_fallbackSurface->canvas(); 149 return m_fallbackSurface->canvas();
(...skipping 26 matching lines...) Expand all
176 ASSERT_NOT_REACHED(); 176 ASSERT_NOT_REACHED();
177 return RecordingImageBufferSurface::FallbackReasonUnknown; 177 return RecordingImageBufferSurface::FallbackReasonUnknown;
178 } 178 }
179 179
180 void RecordingImageBufferSurface::disableDeferral(DisableDeferralReason reason) 180 void RecordingImageBufferSurface::disableDeferral(DisableDeferralReason reason)
181 { 181 {
182 if (!m_fallbackSurface) 182 if (!m_fallbackSurface)
183 fallBackToRasterCanvas(disableDeferralReasonToFallbackReason(reason)); 183 fallBackToRasterCanvas(disableDeferralReasonToFallbackReason(reason));
184 } 184 }
185 185
186 PassRefPtr<SkPicture> RecordingImageBufferSurface::getPicture() 186 sk_sp<SkPicture> RecordingImageBufferSurface::getPicture()
187 { 187 {
188 if (m_fallbackSurface) 188 if (m_fallbackSurface)
189 return nullptr; 189 return nullptr;
190 190
191 FallbackReason fallbackReason = FallbackReasonUnknown; 191 FallbackReason fallbackReason = FallbackReasonUnknown;
192 bool canUsePicture = finalizeFrameInternal(&fallbackReason); 192 bool canUsePicture = finalizeFrameInternal(&fallbackReason);
193 m_imageBuffer->didFinalizeFrame(); 193 m_imageBuffer->didFinalizeFrame();
194 194
195 ASSERT(canUsePicture || m_fallbackFactory); 195 ASSERT(canUsePicture || m_fallbackFactory);
196 196
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 void RecordingImageBufferSurface::flush(FlushReason reason) 232 void RecordingImageBufferSurface::flush(FlushReason reason)
233 { 233 {
234 if (!m_fallbackSurface) 234 if (!m_fallbackSurface)
235 fallBackToRasterCanvas(flushReasonToFallbackReason(reason)); 235 fallBackToRasterCanvas(flushReasonToFallbackReason(reason));
236 m_fallbackSurface->flush(reason); 236 m_fallbackSurface->flush(reason);
237 } 237 }
238 238
239 void RecordingImageBufferSurface::willOverwriteCanvas() 239 void RecordingImageBufferSurface::willOverwriteCanvas()
240 { 240 {
241 m_frameWasCleared = true; 241 m_frameWasCleared = true;
242 m_previousFrame.clear(); 242 m_previousFrame.reset();
243 m_previousFrameHasExpensiveOp = false; 243 m_previousFrameHasExpensiveOp = false;
244 m_previousFramePixelCount = 0; 244 m_previousFramePixelCount = 0;
245 if (m_didRecordDrawCommandsInCurrentFrame) { 245 if (m_didRecordDrawCommandsInCurrentFrame) {
246 // Discard previous draw commands 246 // Discard previous draw commands
247 m_currentFrame->finishRecordingAsPicture(); 247 m_currentFrame->finishRecordingAsPicture();
248 initializeCurrentFrame(); 248 initializeCurrentFrame();
249 } 249 }
250 } 250 }
251 251
252 void RecordingImageBufferSurface::didDraw(const FloatRect& rect) 252 void RecordingImageBufferSurface::didDraw(const FloatRect& rect)
253 { 253 {
254 m_didRecordDrawCommandsInCurrentFrame = true; 254 m_didRecordDrawCommandsInCurrentFrame = true;
255 IntRect pixelBounds = enclosingIntRect(rect); 255 IntRect pixelBounds = enclosingIntRect(rect);
256 m_currentFramePixelCount += pixelBounds.width() * pixelBounds.height(); 256 m_currentFramePixelCount += pixelBounds.width() * pixelBounds.height();
257 } 257 }
258 258
259 bool RecordingImageBufferSurface::finalizeFrameInternal(FallbackReason* fallback Reason) 259 bool RecordingImageBufferSurface::finalizeFrameInternal(FallbackReason* fallback Reason)
260 { 260 {
261 CHECK(!m_fallbackSurface); 261 CHECK(!m_fallbackSurface);
262 CHECK(m_currentFrame); 262 CHECK(m_currentFrame);
263 ASSERT(m_currentFrame->getRecordingCanvas()); 263 ASSERT(m_currentFrame->getRecordingCanvas());
264 ASSERT(fallbackReason); 264 ASSERT(fallbackReason);
265 ASSERT(*fallbackReason == FallbackReasonUnknown); 265 ASSERT(*fallbackReason == FallbackReasonUnknown);
266 266
267 if (!m_imageBuffer->isDirty()) { 267 if (!m_imageBuffer->isDirty()) {
268 if (!m_previousFrame) { 268 if (!m_previousFrame) {
269 // Create an initial blank frame 269 // Create an initial blank frame
270 m_previousFrame = fromSkSp(m_currentFrame->finishRecordingAsPicture( )); 270 m_previousFrame = m_currentFrame->finishRecordingAsPicture();
271 initializeCurrentFrame(); 271 initializeCurrentFrame();
272 } 272 }
273 CHECK(m_currentFrame); 273 CHECK(m_currentFrame);
274 return true; 274 return true;
275 } 275 }
276 276
277 if (!m_frameWasCleared) { 277 if (!m_frameWasCleared) {
278 *fallbackReason = FallbackReasonCanvasNotClearedBetweenFrames; 278 *fallbackReason = FallbackReasonCanvasNotClearedBetweenFrames;
279 return false; 279 return false;
280 } 280 }
281 281
282 if (m_fallbackFactory && m_currentFrame->getRecordingCanvas()->getSaveCount( ) > ExpensiveCanvasHeuristicParameters::ExpensiveRecordingStackDepth) { 282 if (m_fallbackFactory && m_currentFrame->getRecordingCanvas()->getSaveCount( ) > ExpensiveCanvasHeuristicParameters::ExpensiveRecordingStackDepth) {
283 *fallbackReason = FallbackReasonRunawayStateStack; 283 *fallbackReason = FallbackReasonRunawayStateStack;
284 return false; 284 return false;
285 } 285 }
286 286
287 m_previousFrame = fromSkSp(m_currentFrame->finishRecordingAsPicture()); 287 m_previousFrame = m_currentFrame->finishRecordingAsPicture();
288 m_previousFrameHasExpensiveOp = m_currentFrameHasExpensiveOp; 288 m_previousFrameHasExpensiveOp = m_currentFrameHasExpensiveOp;
289 m_previousFramePixelCount = m_currentFramePixelCount; 289 m_previousFramePixelCount = m_currentFramePixelCount;
290 initializeCurrentFrame(); 290 initializeCurrentFrame();
291 291
292 m_frameWasCleared = false; 292 m_frameWasCleared = false;
293 return true; 293 return true;
294 } 294 }
295 295
296 void RecordingImageBufferSurface::draw(GraphicsContext& context, const FloatRect & destRect, const FloatRect& srcRect, SkXfermode::Mode op) 296 void RecordingImageBufferSurface::draw(GraphicsContext& context, const FloatRect & destRect, const FloatRect& srcRect, SkXfermode::Mode op)
297 { 297 {
298 if (m_fallbackSurface) { 298 if (m_fallbackSurface) {
299 m_fallbackSurface->draw(context, destRect, srcRect, op); 299 m_fallbackSurface->draw(context, destRect, srcRect, op);
300 return; 300 return;
301 } 301 }
302 302
303 RefPtr<SkPicture> picture = getPicture(); 303 sk_sp<SkPicture> picture = getPicture();
304 if (picture) { 304 if (picture) {
305 context.compositePicture(picture.get(), destRect, srcRect, op); 305 context.compositePicture(std::move(picture), destRect, srcRect, op);
306 } else { 306 } else {
307 ImageBufferSurface::draw(context, destRect, srcRect, op); 307 ImageBufferSurface::draw(context, destRect, srcRect, op);
308 } 308 }
309 } 309 }
310 310
311 bool RecordingImageBufferSurface::isExpensiveToPaint() 311 bool RecordingImageBufferSurface::isExpensiveToPaint()
312 { 312 {
313 if (m_fallbackSurface) 313 if (m_fallbackSurface)
314 return m_fallbackSurface->isExpensiveToPaint(); 314 return m_fallbackSurface->isExpensiveToPaint();
315 315
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 360
361 void RecordingImageBufferSurface::setIsHidden(bool hidden) 361 void RecordingImageBufferSurface::setIsHidden(bool hidden)
362 { 362 {
363 if (m_fallbackSurface) 363 if (m_fallbackSurface)
364 m_fallbackSurface->setIsHidden(hidden); 364 m_fallbackSurface->setIsHidden(hidden);
365 else 365 else
366 ImageBufferSurface::setIsHidden(hidden); 366 ImageBufferSurface::setIsHidden(hidden);
367 } 367 }
368 368
369 } // namespace blink 369 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698