| Index: android_webview/browser/gl_view_renderer_manager.cc
|
| diff --git a/android_webview/browser/gl_view_renderer_manager.cc b/android_webview/browser/gl_view_renderer_manager.cc
|
| index bca0d135f2c8a63f5b74ffde04735a0a53d7fe3a..6c9ab4a8d294cf7ccf0b649b95610c068f82da76 100644
|
| --- a/android_webview/browser/gl_view_renderer_manager.cc
|
| +++ b/android_webview/browser/gl_view_renderer_manager.cc
|
| @@ -5,16 +5,34 @@
|
| #include "android_webview/browser/gl_view_renderer_manager.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/threading/platform_thread.h"
|
|
|
| namespace android_webview {
|
|
|
| +using base::AutoLock;
|
| +
|
| GLViewRendererManager::GLViewRendererManager() {}
|
|
|
| GLViewRendererManager::~GLViewRendererManager() {}
|
|
|
| +bool GLViewRendererManager::OnRenderThread() const {
|
| + AutoLock auto_lock(lock_);
|
| + return render_thread_.is_equal(base::PlatformThread::CurrentHandle());
|
| +}
|
| +
|
| +void GLViewRendererManager::MarkRenderThread() {
|
| + lock_.AssertAcquired();
|
| + if (render_thread_.is_null())
|
| + render_thread_ = base::PlatformThread::CurrentHandle();
|
| + DCHECK(render_thread_.is_equal(base::PlatformThread::CurrentHandle()));
|
| +}
|
| +
|
| GLViewRendererManager::Key GLViewRendererManager::DidDrawGL(
|
| Key key,
|
| BrowserViewRenderer* view) {
|
| + AutoLock auto_lock(lock_);
|
| + MarkRenderThread();
|
| +
|
| if (key == mru_list_.end()) {
|
| DCHECK(mru_list_.end() ==
|
| std::find(mru_list_.begin(), mru_list_.end(), view));
|
| @@ -28,17 +46,20 @@ GLViewRendererManager::Key GLViewRendererManager::DidDrawGL(
|
| }
|
|
|
| void GLViewRendererManager::NoLongerExpectsDrawGL(Key key) {
|
| + AutoLock auto_lock(lock_);
|
| DCHECK(mru_list_.end() != key);
|
| mru_list_.erase(key);
|
| }
|
|
|
| BrowserViewRenderer* GLViewRendererManager::GetMostRecentlyDrawn() const {
|
| + AutoLock auto_lock(lock_);
|
| if (mru_list_.begin() == mru_list_.end())
|
| return NULL;
|
| return *mru_list_.begin();
|
| }
|
|
|
| GLViewRendererManager::Key GLViewRendererManager::NullKey() {
|
| + AutoLock auto_lock(lock_);
|
| return mru_list_.end();
|
| }
|
|
|
|
|