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

Unified Diff: dm/DMWriteTask.cpp

Issue 560453002: Back to hashing source content, not .png. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Remove test Created 6 years, 3 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
« no previous file with comments | « no previous file | gyp/tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dm/DMWriteTask.cpp
diff --git a/dm/DMWriteTask.cpp b/dm/DMWriteTask.cpp
index 95f162d313bbce1903a6c3c6508a3e6c0722d37d..fd8396cce12c199276d0960727b186128a946f42 100644
--- a/dm/DMWriteTask.cpp
+++ b/dm/DMWriteTask.cpp
@@ -64,18 +64,9 @@ void WriteTask::makeDirOrFail(SkString dir) {
}
}
-static SkStreamAsset* encode_to_png(const SkBitmap& bitmap) {
- SkDynamicMemoryWStream png;
- if (!SkImageEncoder::EncodeStream(&png, bitmap, SkImageEncoder::kPNG_Type, 100)) {
- return NULL;
- }
- png.copyToData()->unref(); // Forces detachAsStream() to be contiguous.
- return png.detachAsStream();
-}
-
-static SkString get_md5(SkStreamAsset* src) {
+static SkString get_md5(const void* ptr, size_t len) {
SkMD5 hasher;
- hasher.write(src->getMemoryBase(), src->getLength());
+ hasher.write(ptr, len);
SkMD5::Digest digest;
hasher.finish(digest);
@@ -96,14 +87,14 @@ SkTArray<JsonData> gJsonData;
SK_DECLARE_STATIC_MUTEX(gJsonDataLock);
void WriteTask::draw() {
- if (!fData.get()) {
- fData.reset(encode_to_png(fBitmap));
- if (!fData.get()) {
- this->fail("Can't encode to PNG.");
- }
+ SkString md5;
+ {
+ SkAutoLockPixels lock(fBitmap);
+ md5 = fData ? get_md5(fData->getMemoryBase(), fData->getLength())
+ : get_md5(fBitmap.getPixels(), fBitmap.getSize());
}
- JsonData entry = { fBaseName, fSuffixes[0], fSourceType, get_md5(fData) };
+ JsonData entry = { fBaseName, fSuffixes[0], fSourceType, md5 };
{
SkAutoMutexAcquire lock(&gJsonDataLock);
gJsonData.push_back(entry);
@@ -120,7 +111,7 @@ void WriteTask::draw() {
SkString path;
if (FLAGS_nameByHash) {
// Flat directory of hash-named files.
- path = SkOSPath::Join(dir.c_str(), entry.md5.c_str());
+ path = SkOSPath::Join(dir.c_str(), md5.c_str());
path.append(fExtension);
// We're content-addressed, so it's possible two threads race to write
// this file. We let the first one win. This also means we won't
@@ -145,8 +136,9 @@ void WriteTask::draw() {
return this->fail("Can't open file.");
}
- fData->rewind();
- if (!file.writeStream(fData, fData->getLength())) {
+ bool ok = fData ? file.writeStream(fData, fData->getLength())
+ : SkImageEncoder::EncodeStream(&file, fBitmap, SkImageEncoder::kPNG_Type, 100);
+ if (!ok) {
return this->fail("Can't write to file.");
}
}
« no previous file with comments | « no previous file | gyp/tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698