summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host/software_frame_manager.h
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-29 01:20:02 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-29 01:20:02 +0000
commit2fc3ef9f760738af16068fa56892bba0df9a1a88 (patch)
treed14191f2c77f5892c16ccddbb3e5a0d2dfda7d68 /content/browser/renderer_host/software_frame_manager.h
parent56c6658dc5a13b897b336c6d2f81cba28e3ff6b3 (diff)
downloadchromium_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.h36
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_