diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-29 01:20:02 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-29 01:20:02 +0000 |
commit | 2fc3ef9f760738af16068fa56892bba0df9a1a88 (patch) | |
tree | d14191f2c77f5892c16ccddbb3e5a0d2dfda7d68 /content/browser/renderer_host/software_frame_manager.h | |
parent | 56c6658dc5a13b897b336c6d2f81cba28e3ff6b3 (diff) | |
download | chromium_src-2fc3ef9f760738af16068fa56892bba0df9a1a88.zip chromium_src-2fc3ef9f760738af16068fa56892bba0df9a1a88.tar.gz chromium_src-2fc3ef9f760738af16068fa56892bba0df9a1a88.tar.bz2 |
Aura/ÜC: Drop frames on background tabs
We want to make sure we release memory on background tabs to avoid scaling
memory usage with the number of open tabs.
This CL hooks into the same memory manager as for software frames (extracted
into RendererFrameManager), which mainly tries to keep a maximum of 2 to 5
(depending on available memory) tabs with an allocated frame, for faster tab
switching. The other ones will discard their frames and return the resources
to the renderer.
BUG=311353
Review URL: https://codereview.chromium.org/43193002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231473 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host/software_frame_manager.h')
-rw-r--r-- | content/browser/renderer_host/software_frame_manager.h | 36 |
1 files changed, 4 insertions, 32 deletions
diff --git a/content/browser/renderer_host/software_frame_manager.h b/content/browser/renderer_host/software_frame_manager.h index d7f186f..503a40d 100644 --- a/content/browser/renderer_host/software_frame_manager.h +++ b/content/browser/renderer_host/software_frame_manager.h @@ -11,17 +11,16 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/memory/shared_memory.h" -#include "base/memory/singleton.h" #include "base/memory/weak_ptr.h" #include "cc/output/software_frame_data.h" #include "cc/resources/single_release_callback.h" #include "cc/resources/texture_mailbox.h" +#include "content/browser/renderer_host/renderer_frame_manager.h" #include "content/common/content_export.h" #include "ui/gfx/size.h" namespace content { class SoftwareFrame; -class SoftwareFrameMemoryManager; class CONTENT_EXPORT SoftwareFrameManagerClient { public: @@ -36,11 +35,11 @@ class CONTENT_EXPORT SoftwareFrameManagerClient { virtual void ReleaseReferencesToSoftwareFrame() = 0; }; -class CONTENT_EXPORT SoftwareFrameManager { +class CONTENT_EXPORT SoftwareFrameManager : public RendererFrameManagerClient { public: explicit SoftwareFrameManager( base::WeakPtr<SoftwareFrameManagerClient> client); - ~SoftwareFrameManager(); + virtual ~SoftwareFrameManager(); // Swaps to a new frame from shared memory. This frame is guaranteed to // not be evicted until SwapToNewFrameComplete is called. @@ -61,11 +60,9 @@ class CONTENT_EXPORT SoftwareFrameManager { gfx::Size GetCurrentFrameSizeInDIP() const; private: - friend class SoftwareFrameMemoryManager; - // Called by SoftwareFrameMemoryManager to demand that the current frame // be evicted. - void EvictCurrentFrame(); + virtual void EvictCurrentFrame() OVERRIDE; base::WeakPtr<SoftwareFrameManagerClient> client_; @@ -75,31 +72,6 @@ class CONTENT_EXPORT SoftwareFrameManager { DISALLOW_COPY_AND_ASSIGN(SoftwareFrameManager); }; -class CONTENT_EXPORT SoftwareFrameMemoryManager { - public: - static SoftwareFrameMemoryManager* GetInstance(); - - void AddFrame(SoftwareFrameManager*, bool visible); - void RemoveFrame(SoftwareFrameManager*); - void SetFrameVisibility(SoftwareFrameManager*, bool visible); - - size_t max_number_of_saved_frames() const { - return max_number_of_saved_frames_; - } - - private: - SoftwareFrameMemoryManager(); - ~SoftwareFrameMemoryManager(); - void CullHiddenFrames(); - friend struct DefaultSingletonTraits<SoftwareFrameMemoryManager>; - - std::set<SoftwareFrameManager*> visible_frames_; - std::list<SoftwareFrameManager*> hidden_frames_; - size_t max_number_of_saved_frames_; - - DISALLOW_COPY_AND_ASSIGN(SoftwareFrameMemoryManager); -}; - } // namespace content #endif // CONTENT_BROWSER_RENDERER_HOST_SOFTWARE_FRAME_MANAGER_H_ |