OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
9 #include "SkData.h" | 9 #include "SkData.h" |
10 #include "SkImageFilter.h" | 10 #include "SkImageFilter.h" |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 static void* push(SkTDArray<uint8_t>* bytes, size_t pod, Args&&... args) { | 471 static void* push(SkTDArray<uint8_t>* bytes, size_t pod, Args&&... args) { |
472 size_t skip = SkAlignPtr(sizeof(T) + pod); | 472 size_t skip = SkAlignPtr(sizeof(T) + pod); |
473 auto op = (T*)bytes->append(skip); | 473 auto op = (T*)bytes->append(skip); |
474 new (op) T{ std::forward<Args>(args)... }; | 474 new (op) T{ std::forward<Args>(args)... }; |
475 op->skip = skip; | 475 op->skip = skip; |
476 return op+1; | 476 return op+1; |
477 } | 477 } |
478 | 478 |
479 template <typename Fn> | 479 template <typename Fn> |
480 static void map(SkTDArray<uint8_t>* bytes, Fn&& fn) { | 480 static void map(SkTDArray<uint8_t>* bytes, Fn&& fn) { |
481 for (uint8_t* ptr = bytes->begin(); ptr < bytes->end(); ) { | 481 auto end = bytes->end(); |
| 482 for (uint8_t* ptr = bytes->begin(); ptr < end; ) { |
482 auto op = (Op*)ptr; | 483 auto op = (Op*)ptr; |
483 fn(op); | 484 fn(op); |
484 ptr += op->skip; | 485 ptr += op->skip; |
485 } | 486 } |
486 } | 487 } |
487 | 488 |
488 void SkLiteDL:: save() { push <Save>(&fBytes, 0); } | 489 void SkLiteDL:: save() { push <Save>(&fBytes, 0); } |
489 void SkLiteDL::restore() { push<Restore>(&fBytes, 0); } | 490 void SkLiteDL::restore() { push<Restore>(&fBytes, 0); } |
490 void SkLiteDL::saveLayer(const SkRect* bounds, const SkPaint* paint, | 491 void SkLiteDL::saveLayer(const SkRect* bounds, const SkPaint* paint, |
491 const SkImageFilter* backdrop, SkCanvas::SaveLayerFlags
flags) { | 492 const SkImageFilter* backdrop, SkCanvas::SaveLayerFlags
flags) { |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 } | 714 } |
714 | 715 |
715 void SkLiteDL::PurgeFreelist() { | 716 void SkLiteDL::PurgeFreelist() { |
716 SkAutoMutexAcquire lock(gFreeStackLock); | 717 SkAutoMutexAcquire lock(gFreeStackLock); |
717 while (gFreeStack) { | 718 while (gFreeStack) { |
718 SkLiteDL* top = gFreeStack; | 719 SkLiteDL* top = gFreeStack; |
719 gFreeStack = gFreeStack->fNext; | 720 gFreeStack = gFreeStack->fNext; |
720 delete top; // Calling unref() here would just put it back on the list
! | 721 delete top; // Calling unref() here would just put it back on the list
! |
721 } | 722 } |
722 } | 723 } |
OLD | NEW |