Manually revert "4x allocation in PipeController is probably overkill."
This reverts commit 2d91efffdb57646a495de5bf859ff281ef86dd12.
Conflicts:
src/pipe/SkGPipeWrite.cpp
BUG=372671
R=mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/277653004
git-svn-id: http://skia.googlecode.com/svn/trunk@14725 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pipe/utils/SamplePipeControllers.cpp b/src/pipe/utils/SamplePipeControllers.cpp
index de26346..1e25cb6 100644
--- a/src/pipe/utils/SamplePipeControllers.cpp
+++ b/src/pipe/utils/SamplePipeControllers.cpp
@@ -13,16 +13,23 @@
#include "SkMatrix.h"
PipeController::PipeController(SkCanvas* target, SkPicture::InstallPixelRefProc proc)
- : fReader(target), fBlockSize(0), fBytesWritten(0) {
+:fReader(target) {
+ fBlock = NULL;
+ fBlockSize = fBytesWritten = 0;
fReader.setBitmapDecoder(proc);
}
-void* PipeController::requestBlock(size_t minRequest, size_t* actual) {
- fBlockSize = minRequest;
- fBlock.reset(fBlockSize);
+PipeController::~PipeController() {
+ sk_free(fBlock);
+}
+
+void* PipeController::requestBlock(size_t minRequest, size_t *actual) {
+ sk_free(fBlock);
+ fBlockSize = minRequest * 4;
+ fBlock = sk_malloc_throw(fBlockSize);
fBytesWritten = 0;
*actual = fBlockSize;
- return fBlock.get();
+ return fBlock;
}
void PipeController::notifyWritten(size_t bytes) {