• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;
VerifyContexts()25   virtual void VerifyContexts() OVERRIDE {}
DeleteCachedResources()26   virtual void DeleteCachedResources() OVERRIDE {}
27   virtual bool DestroyedOnMainThread() OVERRIDE;
SetLostContextCallback(const LostContextCallback & lost_context_callback)28   virtual void SetLostContextCallback(
29       const LostContextCallback& lost_context_callback) OVERRIDE {}
SetMemoryPolicyChangedCallback(const MemoryPolicyChangedCallback & memory_policy_changed_callback)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:
ContextLostThunk(void * closure)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 };
48 
49 }  // namespace mojo
50 
51 #endif  // MOJO_CC_CONTEXT_PROVIDER_MOJO_H_
52