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 {
15 base::LazyInstance<GLViewRendererManager>::Leaky g_view_renderer_manager =
16 LAZY_INSTANCE_INITIALIZER;
20 GLViewRendererManager* GLViewRendererManager::GetInstance() {
21 return g_view_renderer_manager.Pointer();
24 GLViewRendererManager::GLViewRendererManager() {}
26 GLViewRendererManager::~GLViewRendererManager() {}
28 GLViewRendererManager::Key GLViewRendererManager::PushBack(RendererType view) {
29 AutoLock auto_lock(lock_);
30 DCHECK(mru_list_.end() ==
31 std::find(mru_list_.begin(), mru_list_.end(), view));
32 mru_list_.push_back(view);
33 Key back = mru_list_.end();
38 void GLViewRendererManager::DidDrawGL(Key key) {
39 AutoLock auto_lock(lock_);
40 DCHECK(mru_list_.end() != key);
41 mru_list_.splice(mru_list_.begin(), mru_list_, key);
44 void GLViewRendererManager::Remove(Key key) {
45 AutoLock auto_lock(lock_);
46 DCHECK(mru_list_.end() != key);
50 GLViewRendererManager::RendererType
51 GLViewRendererManager::GetMostRecentlyDrawn() const {
52 AutoLock auto_lock(lock_);
53 if (mru_list_.begin() == mru_list_.end())
55 return *mru_list_.begin();
58 } // namespace android_webview