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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp

Issue 2550373005: Make WebTaskRunner ThreadSafeRefCounted (Closed)
Patch Set: +DISALLOW_COPY_AND_ASSIGN for win build fix Created 3 years, 11 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 "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h" 5 #include "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h"
6 6
7 #include "cc/output/compositor_frame.h" 7 #include "cc/output/compositor_frame.h"
8 #include "cc/quads/texture_draw_quad.h" 8 #include "cc/quads/texture_draw_quad.h"
9 #include "gpu/command_buffer/client/gles2_interface.h" 9 #include "gpu/command_buffer/client/gles2_interface.h"
10 #include "platform/CrossThreadFunctional.h" 10 #include "platform/CrossThreadFunctional.h"
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 resource.is_software = false; 162 resource.is_software = false;
163 163
164 // Hold ref to |image|, to keep it alive until the browser ReclaimResources. 164 // Hold ref to |image|, to keep it alive until the browser ReclaimResources.
165 // It guarantees that the resource is not re-used or deleted. 165 // It guarantees that the resource is not re-used or deleted.
166 m_cachedImages.add(m_nextResourceId, std::move(image)); 166 m_cachedImages.add(m_nextResourceId, std::move(image));
167 } 167 }
168 168
169 namespace { 169 namespace {
170 170
171 void updatePlaceholderImage(WeakPtr<OffscreenCanvasFrameDispatcher> dispatcher, 171 void updatePlaceholderImage(WeakPtr<OffscreenCanvasFrameDispatcher> dispatcher,
172 std::unique_ptr<WebTaskRunner> taskRunner, 172 RefPtr<WebTaskRunner> taskRunner,
173 int placeholderCanvasId, 173 int placeholderCanvasId,
174 RefPtr<blink::StaticBitmapImage> image, 174 RefPtr<blink::StaticBitmapImage> image,
175 unsigned resourceId) { 175 unsigned resourceId) {
176 DCHECK(isMainThread()); 176 DCHECK(isMainThread());
177 OffscreenCanvasPlaceholder* placeholderCanvas = 177 OffscreenCanvasPlaceholder* placeholderCanvas =
178 OffscreenCanvasPlaceholder::getPlaceholderById(placeholderCanvasId); 178 OffscreenCanvasPlaceholder::getPlaceholderById(placeholderCanvasId);
179 if (placeholderCanvas) { 179 if (placeholderCanvas) {
180 placeholderCanvas->setPlaceholderFrame(std::move(image), 180 placeholderCanvas->setPlaceholderFrame(std::move(image),
181 std::move(dispatcher), 181 std::move(dispatcher),
182 std::move(taskRunner), resourceId); 182 std::move(taskRunner), resourceId);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } else { 246 } else {
247 // Case 4: both canvas and compositor are not gpu accelerated. 247 // Case 4: both canvas and compositor are not gpu accelerated.
248 commitType = CommitSoftwareCanvasSoftwareCompositing; 248 commitType = CommitSoftwareCanvasSoftwareCompositing;
249 setTransferableResourceToSharedBitmap(resource, image); 249 setTransferableResourceToSharedBitmap(resource, image);
250 } 250 }
251 } 251 }
252 252
253 // After this point, |image| can only be used on the main thread, until 253 // After this point, |image| can only be used on the main thread, until
254 // it is returned. 254 // it is returned.
255 image->transfer(); 255 image->transfer();
256 std::unique_ptr<WebTaskRunner> dispatcherTaskRunner = 256 RefPtr<WebTaskRunner> dispatcherTaskRunner =
257 Platform::current()->currentThread()->getWebTaskRunner()->clone(); 257 Platform::current()->currentThread()->getWebTaskRunner();
258 258
259 Platform::current()->mainThread()->getWebTaskRunner()->postTask( 259 Platform::current()->mainThread()->getWebTaskRunner()->postTask(
260 BLINK_FROM_HERE, 260 BLINK_FROM_HERE,
261 crossThreadBind(updatePlaceholderImage, this->createWeakPtr(), 261 crossThreadBind(updatePlaceholderImage, this->createWeakPtr(),
262 WTF::passed(std::move(dispatcherTaskRunner)), 262 WTF::passed(std::move(dispatcherTaskRunner)),
263 m_placeholderCanvasId, std::move(image), resource.id)); 263 m_placeholderCanvasId, std::move(image), resource.id));
264 m_spareResourceLocks.add(m_nextResourceId); 264 m_spareResourceLocks.add(m_nextResourceId);
265 265
266 commitTypeHistogram.count(commitType); 266 commitTypeHistogram.count(commitType);
267 267
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 451
452 void OffscreenCanvasFrameDispatcherImpl::reshape(int width, int height) { 452 void OffscreenCanvasFrameDispatcherImpl::reshape(int width, int height) {
453 if (m_width != width || m_height != height) { 453 if (m_width != width || m_height != height) {
454 m_width = width; 454 m_width = width;
455 m_height = height; 455 m_height = height;
456 m_changeSizeForNextCommit = true; 456 m_changeSizeForNextCommit = true;
457 } 457 }
458 } 458 }
459 459
460 } // namespace blink 460 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698