blob: 16c6f8c6ac2bc2a84e17287b827a84e797da9497 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// 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#include "mojo/cc/context_provider_mojo.h"
6
7#include "base/logging.h"
8#include "mojo/public/cpp/environment/environment.h"
9
10namespace mojo {
11
12ContextProviderMojo::ContextProviderMojo(
13 ScopedMessagePipeHandle command_buffer_handle)
14 : command_buffer_handle_(command_buffer_handle.Pass()),
15 context_lost_(false) {
16}
17
18bool ContextProviderMojo::BindToCurrentThread() {
19 DCHECK(command_buffer_handle_.is_valid());
20 context_ = MojoGLES2CreateContext(command_buffer_handle_.release().value(),
21 &ContextLostThunk,
22 this,
23 Environment::GetDefaultAsyncWaiter());
24 return !!context_;
25}
26
27gpu::gles2::GLES2Interface* ContextProviderMojo::ContextGL() {
28 if (!context_)
29 return NULL;
30 return static_cast<gpu::gles2::GLES2Interface*>(
31 MojoGLES2GetGLES2Interface(context_));
32}
33
34gpu::ContextSupport* ContextProviderMojo::ContextSupport() {
35 if (!context_)
36 return NULL;
37 return static_cast<gpu::ContextSupport*>(
38 MojoGLES2GetContextSupport(context_));
39}
40
41class GrContext* ContextProviderMojo::GrContext() { return NULL; }
42
43cc::ContextProvider::Capabilities ContextProviderMojo::ContextCapabilities() {
44 return capabilities_;
45}
46
47bool ContextProviderMojo::IsContextLost() {
48 return context_lost_;
49}
50bool ContextProviderMojo::DestroyedOnMainThread() { return !context_; }
51
52ContextProviderMojo::~ContextProviderMojo() {
53 if (context_)
54 MojoGLES2DestroyContext(context_);
55}
56
57void ContextProviderMojo::ContextLost() {
58 context_lost_ = true;
59}
60
61} // namespace mojo