Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / cc / context_provider_mojo.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MOJO_CC_CONTEXT_PROVIDER_MOJO_H_
6 #define MOJO_CC_CONTEXT_PROVIDER_MOJO_H_
7
8 #include "cc/output/context_provider.h"
9 #include "mojo/public/c/gles2/gles2.h"
10 #include "mojo/public/cpp/system/core.h"
11
12 namespace mojo {
13
14 class ContextProviderMojo : public cc::ContextProvider {
15  public:
16   explicit ContextProviderMojo(ScopedMessagePipeHandle command_buffer_handle);
17
18   // cc::ContextProvider implementation.
19   virtual bool BindToCurrentThread() OVERRIDE;
20   virtual gpu::gles2::GLES2Interface* ContextGL() OVERRIDE;
21   virtual gpu::ContextSupport* ContextSupport() OVERRIDE;
22   virtual class GrContext* GrContext() OVERRIDE;
23   virtual Capabilities ContextCapabilities() OVERRIDE;
24   virtual bool IsContextLost() OVERRIDE;
25   virtual void VerifyContexts() OVERRIDE {}
26   virtual void DeleteCachedResources() OVERRIDE {}
27   virtual bool DestroyedOnMainThread() OVERRIDE;
28   virtual void SetLostContextCallback(
29       const LostContextCallback& lost_context_callback) OVERRIDE {}
30   virtual void SetMemoryPolicyChangedCallback(
31       const MemoryPolicyChangedCallback& memory_policy_changed_callback)
32       OVERRIDE {}
33
34  protected:
35   friend class base::RefCountedThreadSafe<ContextProviderMojo>;
36   virtual ~ContextProviderMojo();
37
38  private:
39   static void ContextLostThunk(void* closure) {
40     static_cast<ContextProviderMojo*>(closure)->ContextLost();
41   }
42   void ContextLost();
43
44   cc::ContextProvider::Capabilities capabilities_;
45   ScopedMessagePipeHandle command_buffer_handle_;
46   MojoGLES2Context context_;
47   bool context_lost_;
48
49   DISALLOW_COPY_AND_ASSIGN(ContextProviderMojo);
50 };
51
52 }  // namespace mojo
53
54 #endif  // MOJO_CC_CONTEXT_PROVIDER_MOJO_H_