Move render_view_context_menu.* and related files out of tab_contents.
[chromium-blink-merge.git] / android_webview / browser / gl_view_renderer_manager.cc
blob980ffebe60f5d0f4329b6727a76320ca99a4cbf4
1 // Copyright 2013 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.
5 #include "android_webview/browser/gl_view_renderer_manager.h"
7 #include "base/logging.h"
8 #include "base/threading/platform_thread.h"
10 namespace android_webview {
12 using base::AutoLock;
14 namespace {
15 base::LazyInstance<GLViewRendererManager>::Leaky g_view_renderer_manager =
16 LAZY_INSTANCE_INITIALIZER;
17 } // namespace
19 // static
20 GLViewRendererManager* GLViewRendererManager::GetInstance() {
21 return g_view_renderer_manager.Pointer();
24 GLViewRendererManager::GLViewRendererManager() {}
26 GLViewRendererManager::~GLViewRendererManager() {}
28 bool GLViewRendererManager::OnRenderThread() const {
29 AutoLock auto_lock(lock_);
30 return render_thread_.is_equal(base::PlatformThread::CurrentHandle());
33 void GLViewRendererManager::MarkRenderThread() {
34 lock_.AssertAcquired();
35 if (render_thread_.is_null())
36 render_thread_ = base::PlatformThread::CurrentHandle();
37 DCHECK(render_thread_.is_equal(base::PlatformThread::CurrentHandle()));
40 GLViewRendererManager::Key GLViewRendererManager::DidDrawGL(Key key,
41 RendererType view) {
42 AutoLock auto_lock(lock_);
43 MarkRenderThread();
45 if (key == mru_list_.end()) {
46 DCHECK(mru_list_.end() ==
47 std::find(mru_list_.begin(), mru_list_.end(), view));
48 mru_list_.push_front(view);
49 return mru_list_.begin();
50 } else {
51 DCHECK(*key == view);
52 mru_list_.splice(mru_list_.begin(), mru_list_, key);
53 return key;
57 void GLViewRendererManager::NoLongerExpectsDrawGL(Key key) {
58 AutoLock auto_lock(lock_);
59 DCHECK(mru_list_.end() != key);
60 mru_list_.erase(key);
63 GLViewRendererManager::RendererType
64 GLViewRendererManager::GetMostRecentlyDrawn() const {
65 AutoLock auto_lock(lock_);
66 if (mru_list_.begin() == mru_list_.end())
67 return NULL;
68 return *mru_list_.begin();
71 GLViewRendererManager::Key GLViewRendererManager::NullKey() {
72 AutoLock auto_lock(lock_);
73 return mru_list_.end();
76 } // namespace android_webview