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

Side by Side Diff: src/utils/SkDeferredCanvas.cpp

Issue 214803002: Making SkDeferredCanvas::silentFlush trigger a skippedPendingDrawCommands callback (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 9 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
« no previous file with comments | « no previous file | tests/DeferredCanvasTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkDeferredCanvas.h" 9 #include "SkDeferredCanvas.h"
10 10
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 SkDeferredCanvas::NotificationClient* notificationClient) { 317 SkDeferredCanvas::NotificationClient* notificationClient) {
318 fNotificationClient = notificationClient; 318 fNotificationClient = notificationClient;
319 } 319 }
320 320
321 void SkDeferredDevice::skipPendingCommands() { 321 void SkDeferredDevice::skipPendingCommands() {
322 if (!fRecordingCanvas->isDrawingToLayer()) { 322 if (!fRecordingCanvas->isDrawingToLayer()) {
323 fCanDiscardCanvasContents = true; 323 fCanDiscardCanvasContents = true;
324 if (fPipeController.hasPendingCommands()) { 324 if (fPipeController.hasPendingCommands()) {
325 fFreshFrame = true; 325 fFreshFrame = true;
326 flushPendingCommands(kSilent_PlaybackMode); 326 flushPendingCommands(kSilent_PlaybackMode);
327 if (fNotificationClient) {
328 fNotificationClient->skippedPendingDrawCommands();
329 }
330 } 327 }
331 } 328 }
332 } 329 }
333 330
334 bool SkDeferredDevice::isFreshFrame() { 331 bool SkDeferredDevice::isFreshFrame() {
335 bool ret = fFreshFrame; 332 bool ret = fFreshFrame;
336 fFreshFrame = false; 333 fFreshFrame = false;
337 return ret; 334 return ret;
338 } 335 }
339 336
(...skipping 16 matching lines...) Expand all
356 353
357 void SkDeferredDevice::flushPendingCommands(PlaybackMode playbackMode) { 354 void SkDeferredDevice::flushPendingCommands(PlaybackMode playbackMode) {
358 if (!fPipeController.hasPendingCommands()) { 355 if (!fPipeController.hasPendingCommands()) {
359 return; 356 return;
360 } 357 }
361 if (playbackMode == kNormal_PlaybackMode) { 358 if (playbackMode == kNormal_PlaybackMode) {
362 aboutToDraw(); 359 aboutToDraw();
363 } 360 }
364 fPipeWriter.flushRecording(true); 361 fPipeWriter.flushRecording(true);
365 fPipeController.playback(kSilent_PlaybackMode == playbackMode); 362 fPipeController.playback(kSilent_PlaybackMode == playbackMode);
366 if (playbackMode == kNormal_PlaybackMode && fNotificationClient) { 363 if (fNotificationClient) {
367 fNotificationClient->flushedDrawCommands(); 364 if (playbackMode == kSilent_PlaybackMode) {
365 fNotificationClient->skippedPendingDrawCommands();
366 } else {
367 fNotificationClient->flushedDrawCommands();
368 }
368 } 369 }
370
369 fPreviousStorageAllocated = storageAllocatedForRecording(); 371 fPreviousStorageAllocated = storageAllocatedForRecording();
370 } 372 }
371 373
372 void SkDeferredDevice::flush() { 374 void SkDeferredDevice::flush() {
373 this->flushPendingCommands(kNormal_PlaybackMode); 375 this->flushPendingCommands(kNormal_PlaybackMode);
374 fImmediateCanvas->flush(); 376 fImmediateCanvas->flush();
375 } 377 }
376 378
377 size_t SkDeferredDevice::freeMemoryIfPossible(size_t bytesToFree) { 379 size_t SkDeferredDevice::freeMemoryIfPossible(size_t bytesToFree) {
378 size_t val = fPipeWriter.freeMemoryIfPossible(bytesToFree); 380 size_t val = fPipeWriter.freeMemoryIfPossible(bytesToFree);
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { 962 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) {
961 this->drawingCanvas()->setDrawFilter(filter); 963 this->drawingCanvas()->setDrawFilter(filter);
962 this->INHERITED::setDrawFilter(filter); 964 this->INHERITED::setDrawFilter(filter);
963 this->recordedDrawCommand(); 965 this->recordedDrawCommand();
964 return filter; 966 return filter;
965 } 967 }
966 968
967 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { 969 SkCanvas* SkDeferredCanvas::canvasForDrawIter() {
968 return this->drawingCanvas(); 970 return this->drawingCanvas();
969 } 971 }
OLDNEW
« no previous file with comments | « no previous file | tests/DeferredCanvasTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698