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

Side by Side Diff: blimp/engine/renderer/engine_image_serialization_processor.cc

Issue 1982893002: [blimp] Add SkPicture caching support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix memory leak by adding virtual destructor Created 4 years, 6 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "blimp/engine/renderer/engine_image_serialization_processor.h" 5 #include "blimp/engine/renderer/engine_image_serialization_processor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/lazy_instance.h" 12 #include "base/lazy_instance.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/ptr_util.h"
14 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
15 #include "base/trace_event/trace_event.h" 16 #include "base/trace_event/trace_event.h"
16 #include "blimp/common/blob_cache/id_util.h" 17 #include "blimp/common/blob_cache/id_util.h"
17 #include "blimp/common/proto/blob_cache.pb.h" 18 #include "blimp/common/proto/blob_cache.pb.h"
19 #include "blimp/engine/renderer/blimp_engine_picture_cache.h"
18 #include "blimp/engine/renderer/blob_channel_sender_proxy.h" 20 #include "blimp/engine/renderer/blob_channel_sender_proxy.h"
21 #include "cc/proto/picture_cache.h"
19 #include "content/public/renderer/render_frame.h" 22 #include "content/public/renderer/render_frame.h"
20 #include "third_party/libwebp/webp/encode.h" 23 #include "third_party/libwebp/webp/encode.h"
21 #include "third_party/skia/include/core/SkData.h" 24 #include "third_party/skia/include/core/SkData.h"
22 #include "third_party/skia/include/core/SkPicture.h" 25 #include "third_party/skia/include/core/SkPicture.h"
23 #include "third_party/skia/include/core/SkPixelSerializer.h" 26 #include "third_party/skia/include/core/SkPixelSerializer.h"
24 #include "third_party/skia/include/core/SkUnPreMultiply.h" 27 #include "third_party/skia/include/core/SkUnPreMultiply.h"
25 28
26 namespace blimp { 29 namespace blimp {
27 namespace engine { 30 namespace engine {
28 namespace { 31 namespace {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 std::unique_ptr<BlobChannelSenderProxy> blob_channel) 92 std::unique_ptr<BlobChannelSenderProxy> blob_channel)
90 : blob_channel_(std::move(blob_channel)) { 93 : blob_channel_(std::move(blob_channel)) {
91 DCHECK(blob_channel_); 94 DCHECK(blob_channel_);
92 WebPMemoryWriterInit(&writer_state_); 95 WebPMemoryWriterInit(&writer_state_);
93 } 96 }
94 97
95 EngineImageSerializationProcessor::~EngineImageSerializationProcessor() { 98 EngineImageSerializationProcessor::~EngineImageSerializationProcessor() {
96 WebPMemoryWriterClear(&writer_state_); 99 WebPMemoryWriterClear(&writer_state_);
97 } 100 }
98 101
99 SkPixelSerializer* EngineImageSerializationProcessor::GetPixelSerializer() { 102 std::unique_ptr<cc::EnginePictureCache>
100 return this; 103 EngineImageSerializationProcessor::CreateEnginePictureCache() {
104 return base::WrapUnique(new BlimpEnginePictureCache(this));
101 } 105 }
102 106
103 SkPicture::InstallPixelRefProc 107 std::unique_ptr<cc::ClientPictureCache>
104 EngineImageSerializationProcessor::GetPixelDeserializer() { 108 EngineImageSerializationProcessor::CreateClientPictureCache() {
Kevin M 2016/06/17 17:53:38 Add NOTREACHED() here?
nyquist 2016/06/17 21:31:43 Done.
105 return nullptr; 109 return nullptr;
106 } 110 }
107 111
108 bool EngineImageSerializationProcessor::onUseEncodedData(const void* data, 112 bool EngineImageSerializationProcessor::onUseEncodedData(const void* data,
109 size_t len) { 113 size_t len) {
110 TRACE_EVENT1("blimp", "WebPImageEncoded::UsingEncodedData", 114 TRACE_EVENT1("blimp", "WebPImageEncoded::UsingEncodedData",
111 "OriginalImageSize", len); 115 "OriginalImageSize", len);
112 // Encode all images regardless of their format, including WebP images. 116 // Encode all images regardless of their format, including WebP images.
113 return false; 117 return false;
114 } 118 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 } 201 }
198 202
199 scoped_refptr<BlobData> blob_data(new BlobData); 203 scoped_refptr<BlobData> blob_data(new BlobData);
200 blob_data->data.assign(reinterpret_cast<const char*>(writer_state_.mem), 204 blob_data->data.assign(reinterpret_cast<const char*>(writer_state_.mem),
201 writer_state_.size); 205 writer_state_.size);
202 return blob_data; 206 return blob_data;
203 } 207 }
204 208
205 } // namespace engine 209 } // namespace engine
206 } // namespace blimp 210 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698