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. 4 5#ifndef ANDROID_WEBVIEW_BROWSER_GL_VIEW_RENDERER_MANAGER_H_ 6#define ANDROID_WEBVIEW_BROWSER_GL_VIEW_RENDERER_MANAGER_H_ 7 8#include <list> 9 10#include "base/basictypes.h" 11#include "base/lazy_instance.h" 12#include "base/synchronization/lock.h" 13#include "base/threading/platform_thread.h" 14 15namespace android_webview { 16 17class SharedRendererState; 18 19class GLViewRendererManager { 20 public: 21 typedef SharedRendererState* RendererType; 22 23 private: 24 typedef std::list<RendererType> ListType; 25 26 public: 27 typedef ListType::iterator Key; 28 29 static GLViewRendererManager* GetInstance(); 30 31 Key NullKey(); 32 33 Key PushBack(RendererType view); 34 35 // |key| must be already in manager. Move renderer corresponding to |key| to 36 // most recent. 37 void DidDrawGL(Key key); 38 39 void Remove(Key key); 40 41 RendererType GetMostRecentlyDrawn() const; 42 43 private: 44 friend struct base::DefaultLazyInstanceTraits<GLViewRendererManager>; 45 46 GLViewRendererManager(); 47 ~GLViewRendererManager(); 48 49 mutable base::Lock lock_; 50 ListType mru_list_; 51 52 DISALLOW_COPY_AND_ASSIGN(GLViewRendererManager); 53}; 54 55} // namespace android_webview 56 57#endif // ANDROID_WEBVIEW_BROWSER_GL_VIEW_RENDERER_MANAGER_H_ 58