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

Unified Diff: third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp

Issue 2840093002: Allow RecordingImageBufferSurface to prevent fallback. (Closed)
Patch Set: imagebuffer-fallback: missedone Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp b/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
index 11f0991e71ffd104181d55b2a950126cf1596c52..5315caa546adfec4fab3080fd29f8db0506bc386 100644
--- a/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
+++ b/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
@@ -20,9 +20,11 @@ namespace blink {
RecordingImageBufferSurface::RecordingImageBufferSurface(
const IntSize& size,
+ AllowFallback allow_fallback,
OpacityMode opacity_mode,
const CanvasColorParams& color_params)
: ImageBufferSurface(size, opacity_mode, color_params),
+ allow_fallback_(allow_fallback),
image_buffer_(0),
current_frame_pixel_count_(0),
previous_frame_pixel_count_(0),
@@ -77,6 +79,7 @@ bool RecordingImageBufferSurface::WritePixels(const SkImageInfo& orig_info,
void RecordingImageBufferSurface::FallBackToRasterCanvas(
FallbackReason reason) {
+ DCHECK(allow_fallback_ == kAllowFallback);
CHECK(reason != kFallbackReasonUnknown);
if (fallback_surface_) {
@@ -315,8 +318,9 @@ bool RecordingImageBufferSurface::FinalizeFrameInternal(
return false;
}
- if (current_frame_->getRecordingCanvas()->getSaveCount() - 1 >
- ExpensiveCanvasHeuristicParameters::kExpensiveRecordingStackDepth) {
+ if (allow_fallback_ == kAllowFallback &&
+ current_frame_->getRecordingCanvas()->getSaveCount() - 1 >
+ ExpensiveCanvasHeuristicParameters::kExpensiveRecordingStackDepth) {
// (getSaveCount() decremented to account for the intial recording canvas
// save frame.)
*fallback_reason = kFallbackReasonRunawayStateStack;

Powered by Google App Engine
This is Rietveld 408576698