summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h')
-rw-r--r--chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h b/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h
new file mode 100644
index 00000000000..ddaef409a3d
--- /dev/null
+++ b/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.h
@@ -0,0 +1,86 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_ANDROID_IN_PROCESS_SYNCHRONOUS_COMPOSITOR_FACTORY_IMPL_H_
+#define CONTENT_BROWSER_ANDROID_IN_PROCESS_SYNCHRONOUS_COMPOSITOR_FACTORY_IMPL_H_
+
+#include "base/synchronization/lock.h"
+#include "content/browser/android/in_process/synchronous_input_event_filter.h"
+#include "content/renderer/android/synchronous_compositor_factory.h"
+#include "content/renderer/media/android/stream_texture_factory_synchronous_impl.h"
+#include "gpu/command_buffer/service/in_process_command_buffer.h"
+#include "webkit/common/gpu/context_provider_web_context.h"
+
+namespace gpu {
+class GLInProcessContext;
+}
+
+namespace webkit {
+namespace gpu {
+class WebGraphicsContext3DInProcessCommandBufferImpl;
+}
+}
+
+namespace content {
+
+class SynchronousCompositorFactoryImpl : public SynchronousCompositorFactory {
+ public:
+ SynchronousCompositorFactoryImpl();
+ virtual ~SynchronousCompositorFactoryImpl();
+
+ // SynchronousCompositorFactory
+ virtual scoped_refptr<base::MessageLoopProxy> GetCompositorMessageLoop()
+ OVERRIDE;
+ virtual bool RecordFullLayer() OVERRIDE;
+ virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(int routing_id)
+ OVERRIDE;
+ virtual InputHandlerManagerClient* GetInputHandlerManagerClient() OVERRIDE;
+ virtual scoped_refptr<webkit::gpu::ContextProviderWebContext>
+ GetSharedOffscreenContextProviderForMainThread() OVERRIDE;
+ virtual scoped_refptr<StreamTextureFactory> CreateStreamTextureFactory(
+ int view_id) OVERRIDE;
+ virtual blink::WebGraphicsContext3D* CreateOffscreenGraphicsContext3D(
+ const blink::WebGraphicsContext3D::Attributes& attributes) OVERRIDE;
+
+
+ SynchronousInputEventFilter* synchronous_input_event_filter() {
+ return &synchronous_input_event_filter_;
+ }
+
+ void SetDeferredGpuService(
+ scoped_refptr<gpu::InProcessCommandBuffer::Service> service);
+ void SetRecordFullDocument(bool record_full_document);
+ void CompositorInitializedHardwareDraw();
+ void CompositorReleasedHardwareDraw();
+
+ scoped_refptr<cc::ContextProvider>
+ CreateOnscreenContextProviderForCompositorThread();
+ gpu::GLInProcessContext* GetShareContext();
+
+ private:
+ bool CanCreateMainThreadContext();
+ scoped_refptr<StreamTextureFactorySynchronousImpl::ContextProvider>
+ TryCreateStreamTextureFactory();
+
+ SynchronousInputEventFilter synchronous_input_event_filter_;
+
+ scoped_refptr<webkit::gpu::ContextProviderWebContext>
+ offscreen_context_for_main_thread_;
+
+ scoped_refptr<gpu::InProcessCommandBuffer::Service> service_;
+ scoped_ptr<gpu::GLInProcessContext> share_context_;
+ scoped_refptr<StreamTextureFactorySynchronousImpl::ContextProvider>
+ video_context_provider_;
+
+ bool record_full_layer_;
+
+ // |num_hardware_compositor_lock_| is updated on UI thread only but can be
+ // read on renderer main thread.
+ base::Lock num_hardware_compositor_lock_;
+ unsigned int num_hardware_compositors_;
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_ANDROID_IN_PROCESS_SYNCHRONOUS_COMPOSITOR_FACTORY_IMPL_H_