Index: content/renderer/media/renderer_gpu_video_decoder_factories.h |
diff --git a/content/renderer/media/renderer_gpu_video_decoder_factories.h b/content/renderer/media/renderer_gpu_video_decoder_factories.h |
index 37359898d6ffa123259aba776ab42934113aefc8..044ffd61e8dfdeb58e9ad82dc111b257b5ec2b2c 100644 |
--- a/content/renderer/media/renderer_gpu_video_decoder_factories.h |
+++ b/content/renderer/media/renderer_gpu_video_decoder_factories.h |
@@ -14,7 +14,7 @@ |
#include "ui/gfx/size.h" |
class GpuChannelHost; |
-class ContentGLContext; |
+class WebGraphicsContext3DCommandBufferImpl; |
namespace base { |
class WaitableEvent; |
} |
@@ -25,15 +25,19 @@ class WaitableEvent; |
// implementation from render_view_impl.cc which is already far too large. |
// |
// The public methods of the class can be called from any thread, and are |
-// internally trampolined to the thread on which the class was constructed |
-// (de-facto, the renderer thread) if called from a different thread. |
+// internally trampolined to the appropriate thread. GPU/GL-related calls go to |
+// the constructor-argument loop (mostly that's the compositor thread, or the |
+// renderer thread if threaded compositing is disabled), and shmem-related calls |
+// go to the render thread. |
class CONTENT_EXPORT RendererGpuVideoDecoderFactories |
: public media::GpuVideoDecoder::Factories { |
public: |
// Takes a ref on |gpu_channel_host| and tests |context| for NULL before each |
// use. |
- RendererGpuVideoDecoderFactories(GpuChannelHost* gpu_channel_host, |
- base::WeakPtr<ContentGLContext> context); |
+ RendererGpuVideoDecoderFactories( |
+ GpuChannelHost* gpu_channel_host, |
+ MessageLoop* message_loop, |
+ WebGraphicsContext3DCommandBufferImpl* wgc3dcbi); |
virtual media::VideoDecodeAccelerator* CreateVideoDecodeAccelerator( |
media::VideoDecodeAccelerator::Profile profile, |
@@ -52,10 +56,11 @@ class CONTENT_EXPORT RendererGpuVideoDecoderFactories |
virtual ~RendererGpuVideoDecoderFactories(); |
private: |
- // Async versions of the public methods. These all run on |message_loop_| |
- // exclusively, and use output parameters instead of return values. Finally, |
- // each takes a WaitableEvent* param to signal completion (except for |
- // DeleteTexture, which is fire-and-forget). |
+ // Async versions of the public methods. They use output parameters instead |
+ // of return values and each takes a WaitableEvent* param to signal completion |
+ // (except for DeleteTexture, which is fire-and-forget). |
+ // AsyncCreateSharedMemory runs on the renderer thread and the rest run on |
+ // |message_loop_|. |
void AsyncCreateVideoDecodeAccelerator( |
media::VideoDecodeAccelerator::Profile profile, |
media::VideoDecodeAccelerator::Client* client, |
@@ -70,7 +75,7 @@ class CONTENT_EXPORT RendererGpuVideoDecoderFactories |
MessageLoop* message_loop_; |
scoped_refptr<GpuChannelHost> gpu_channel_host_; |
- base::WeakPtr<ContentGLContext> context_; |
+ WebGraphicsContext3DCommandBufferImpl* wgc3dcbi_; |
no sievers
2012/03/08 20:09:27
What about the WGC3D going away?
Not only during c
Ami GONE FROM CHROMIUM
2012/03/08 20:19:51
Dunno. James?
(in practice these races will be ra
no sievers
2012/03/08 21:16:16
If you still use the WeakPtr to the ContentGLConte
Ami GONE FROM CHROMIUM
2012/03/08 21:22:27
Actually isn't it enough to know that this member
|
DISALLOW_IMPLICIT_CONSTRUCTORS(RendererGpuVideoDecoderFactories); |
}; |