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 12namespace mojo { 13 14class 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_ 55