| Index: content/browser/android/in_process/synchronous_compositor_factory_impl.h
|
| diff --git a/content/browser/android/in_process/synchronous_compositor_factory_impl.h b/content/browser/android/in_process/synchronous_compositor_factory_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..40bcbac57fd02a4c23c9e66eeb3e0f4961787a22
|
| --- /dev/null
|
| +++ b/content/browser/android/in_process/synchronous_compositor_factory_impl.h
|
| @@ -0,0 +1,83 @@
|
| +// 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_android_synchronous_impl.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 scoped_ptr<cc::OutputSurface> CreateOutputSurface(int routing_id)
|
| + OVERRIDE;
|
| + virtual InputHandlerManagerClient* GetInputHandlerManagerClient() OVERRIDE;
|
| + virtual scoped_refptr<cc::ContextProvider>
|
| + GetOffscreenContextProviderForMainThread() OVERRIDE;
|
| + // This is called on both renderer main thread (offscreen context creation
|
| + // path shared between cross-process and in-process platforms) and renderer
|
| + // compositor impl thread (InitializeHwDraw) in order to support Android
|
| + // WebView synchronously enable and disable hardware mode multiple times in
|
| + // the same task. This is ok because in-process WGC3D creation may happen on
|
| + // any thread and is lightweight.
|
| + virtual scoped_refptr<cc::ContextProvider>
|
| + GetOffscreenContextProviderForCompositorThread() OVERRIDE;
|
| + virtual scoped_ptr<StreamTextureFactory> CreateStreamTextureFactory(
|
| + int view_id) OVERRIDE;
|
| +
|
| + SynchronousInputEventFilter* synchronous_input_event_filter() {
|
| + return &synchronous_input_event_filter_;
|
| + }
|
| +
|
| + void CompositorInitializedHardwareDraw();
|
| + void CompositorReleasedHardwareDraw();
|
| +
|
| + private:
|
| + void ReleaseGlobalHardwareResources();
|
| + bool CanCreateMainThreadContext();
|
| + scoped_refptr<StreamTextureFactorySynchronousImpl::ContextProvider>
|
| + TryCreateStreamTextureFactory();
|
| + scoped_ptr<webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl>
|
| + CreateOffscreenContext();
|
| +
|
| + SynchronousInputEventFilter synchronous_input_event_filter_;
|
| +
|
| + // Only guards construction and destruction of
|
| + // |offscreen_context_for_compositor_thread_|, not usage.
|
| + base::Lock offscreen_context_for_compositor_thread_lock_;
|
| + scoped_refptr<cc::ContextProvider> offscreen_context_for_main_thread_;
|
| + // This is a pointer to the context owned by
|
| + // |offscreen_context_for_main_thread_|.
|
| + gpu::GLInProcessContext* wrapped_gl_context_for_main_thread_;
|
| + scoped_refptr<cc::ContextProvider> offscreen_context_for_compositor_thread_;
|
| +
|
| + // |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_
|
|
|