aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkRawCodec.cpp
diff options
context:
space:
mode:
authorGravatar jcgregorio <jcgregorio@google.com>2016-02-02 05:36:34 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-02-02 05:36:34 -0800
commit2ac722f1f8b675eebc89ca1c2d7d44cfc887b58a (patch)
treeb186a6596265d7b482449955dfed3a378a4abae2 /src/codec/SkRawCodec.cpp
parentfd918e8c739065fa467cf6614181d3a2c5dcadcb (diff)
Revert of Avoid too small reads to bufferMoreData() (patchset #4 id:60001 of https://codereview.chromium.org/1644893003/ )
Reason for revert: Crashed both Nexus 5s: https://build.chromium.org/p/client.skia.android/builders/Perf-Android-GCC-Nexus5-CPU-NEON-Arm7-Release/builds/3355 https://build.chromium.org/p/client.skia.android/builders/Perf-Android-GCC-Nexus5-CPU-NEON-Arm7-Release/builds/3354 Original issue's description: > Avoid too small reads to bufferMoreData() > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1644893003 > > Committed: https://skia.googlesource.com/skia/+/fd918e8c739065fa467cf6614181d3a2c5dcadcb TBR=msarett@google.com,scroggo@google.com,yujieqin@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1656303002
Diffstat (limited to 'src/codec/SkRawCodec.cpp')
-rw-r--r--src/codec/SkRawCodec.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp
index c7de317286..da3c28c549 100644
--- a/src/codec/SkRawCodec.cpp
+++ b/src/codec/SkRawCodec.cpp
@@ -267,13 +267,10 @@ private:
return false;
}
- // Try to read at least 8192 bytes to avoid to many small reads.
- const size_t kMinSizeToRead = 8192;
- const size_t sizeRequested = newSize - fStreamBuffer.bytesWritten();
- const size_t sizeToRead = SkTMax(kMinSizeToRead, sizeRequested);
- SkAutoSTMalloc<kMinSizeToRead, uint8> tempBuffer(sizeToRead);
+ const size_t sizeToRead = newSize - fStreamBuffer.bytesWritten();
+ SkAutoTMalloc<uint8> tempBuffer(sizeToRead);
const size_t bytesRead = fStream->read(tempBuffer.get(), sizeToRead);
- if (bytesRead < sizeRequested) {
+ if (bytesRead != sizeToRead) {
return false;
}
return fStreamBuffer.write(tempBuffer.get(), bytesRead);
@@ -441,6 +438,9 @@ private:
SkCodec* SkRawCodec::NewFromStream(SkStream* stream) {
SkAutoTDelete<SkRawStream> rawStream(new SkRawStream(stream));
::piex::PreviewImageData imageData;
+ // FIXME: ::piex::GetPreviewImageData() calls GetData() frequently with small amounts,
+ // resulting in many calls to bufferMoreData(). Could we make this more efficient by grouping
+ // smaller requests together?
if (::piex::IsRaw(rawStream.get())) {
::piex::Error error = ::piex::GetPreviewImageData(rawStream.get(), &imageData);