Home | History | Annotate | Download | only in cc
      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 };
     48 
     49 }  // namespace mojo
     50 
     51 #endif  // MOJO_CC_CONTEXT_PROVIDER_MOJO_H_
     52