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

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

Issue 2479563005: Create manager to track OffscreenCanvasSurfaceImpl instances (Closed)
Patch Set: Created 4 years, 1 month 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/Histogram.h" 10 #include "platform/Histogram.h"
11 #include "platform/graphics/gpu/SharedGpuContext.h" 11 #include "platform/graphics/gpu/SharedGpuContext.h"
12 #include "public/platform/InterfaceProvider.h" 12 #include "public/platform/InterfaceProvider.h"
13 #include "public/platform/Platform.h" 13 #include "public/platform/Platform.h"
14 #include "public/platform/WebGraphicsContext3DProvider.h" 14 #include "public/platform/WebGraphicsContext3DProvider.h"
15 #include "public/platform/modules/offscreencanvas/offscreen_canvas_surface.mojom -blink.h" 15 #include "public/platform/modules/offscreencanvas/offscreen_canvas_surface.mojom -blink.h"
16 #include "third_party/khronos/GLES2/gl2.h" 16 #include "third_party/khronos/GLES2/gl2.h"
17 #include "third_party/khronos/GLES2/gl2ext.h" 17 #include "third_party/khronos/GLES2/gl2ext.h"
18 #include "third_party/skia/include/core/SkColor.h" 18 #include "third_party/skia/include/core/SkColor.h"
19 #include "third_party/skia/include/core/SkImage.h" 19 #include "third_party/skia/include/core/SkImage.h"
20 #include "ui/gfx/geometry/rect.h" 20 #include "ui/gfx/geometry/rect.h"
21 #include "ui/gfx/transform.h" 21 #include "ui/gfx/transform.h"
22 #include "wtf/typed_arrays/ArrayBuffer.h" 22 #include "wtf/typed_arrays/ArrayBuffer.h"
23 #include "wtf/typed_arrays/Uint8Array.h" 23 #include "wtf/typed_arrays/Uint8Array.h"
24 24
25 namespace blink { 25 namespace blink {
26 26
27 OffscreenCanvasFrameDispatcherImpl::OffscreenCanvasFrameDispatcherImpl( 27 OffscreenCanvasFrameDispatcherImpl::OffscreenCanvasFrameDispatcherImpl(
28 int canvasId,
28 uint32_t clientId, 29 uint32_t clientId,
29 uint32_t sinkId, 30 uint32_t sinkId,
30 uint32_t localId, 31 uint32_t localId,
31 uint64_t nonce, 32 uint64_t nonce,
32 int width, 33 int width,
33 int height) 34 int height)
34 : m_surfaceId(cc::FrameSinkId(clientId, sinkId), 35 : m_surfaceId(cc::FrameSinkId(clientId, sinkId),
35 cc::LocalFrameId(localId, nonce)), 36 cc::LocalFrameId(localId, nonce)),
36 m_width(width), 37 m_width(width),
37 m_height(height), 38 m_height(height),
38 m_nextResourceId(1u), 39 m_nextResourceId(1u),
39 m_binding(this) { 40 m_binding(this) {
40 DCHECK(!m_sink.is_bound()); 41 DCHECK(!m_sink.is_bound());
41 mojom::blink::OffscreenCanvasCompositorFrameSinkProviderPtr provider; 42 mojom::blink::OffscreenCanvasCompositorFrameSinkProviderPtr provider;
42 Platform::current()->interfaceProvider()->getInterface( 43 Platform::current()->interfaceProvider()->getInterface(
43 mojo::GetProxy(&provider)); 44 mojo::GetProxy(&provider));
44 provider->CreateCompositorFrameSink(m_surfaceId, 45 provider->CreateCompositorFrameSink(canvasId, m_surfaceId,
45 m_binding.CreateInterfacePtrAndBind(), 46 m_binding.CreateInterfacePtrAndBind(),
46 mojo::GetProxy(&m_sink)); 47 mojo::GetProxy(&m_sink));
47 } 48 }
48 49
49 void OffscreenCanvasFrameDispatcherImpl::setTransferableResourceToSharedBitmap( 50 void OffscreenCanvasFrameDispatcherImpl::setTransferableResourceToSharedBitmap(
50 cc::TransferableResource& resource, 51 cc::TransferableResource& resource,
51 RefPtr<StaticBitmapImage> image) { 52 RefPtr<StaticBitmapImage> image) {
52 std::unique_ptr<cc::SharedBitmap> bitmap = 53 std::unique_ptr<cc::SharedBitmap> bitmap =
53 Platform::current()->allocateSharedBitmap(IntSize(m_width, m_height)); 54 Platform::current()->allocateSharedBitmap(IntSize(m_width, m_height));
54 if (!bitmap) 55 if (!bitmap)
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } 329 }
329 330
330 bool OffscreenCanvasFrameDispatcherImpl::verifyImageSize( 331 bool OffscreenCanvasFrameDispatcherImpl::verifyImageSize(
331 const sk_sp<SkImage>& image) { 332 const sk_sp<SkImage>& image) {
332 if (image && image->width() == m_width && image->height() == m_height) 333 if (image && image->width() == m_width && image->height() == m_height)
333 return true; 334 return true;
334 return false; 335 return false;
335 } 336 }
336 337
337 } // namespace blink 338 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698