Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: content/browser/renderer_host/frame_memory_manager.cc

Issue 25942002: Make software compositing work on Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows resolve Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "content/browser/renderer_host/frame_memory_manager.h"
6
7 #include "base/logging.h"
8 #include "base/memory/singleton.h"
9 #include "base/sys_info.h"
10
11 namespace content {
12
13 namespace {
14
15 size_t MaxNumberOfSavedFrames() {
16 return std::min(5, 2 + (base::SysInfo::AmountOfPhysicalMemoryMB() / 256));
17 }
18
19 } // namespace
20
21 FrameMemoryManager* FrameMemoryManager::GetInstance() {
22 return Singleton<FrameMemoryManager>::get();
23 }
24
25 void FrameMemoryManager::AddFrame(FrameContainer* frame, bool visible) {
26 RemoveFrame(frame);
27 if (visible)
28 visible_frames_.insert(frame);
29 else
30 hidden_frames_.push_front(frame);
31 CullHiddenFrames();
32 }
33
34 void FrameMemoryManager::RemoveFrame(FrameContainer* frame) {
35 visible_frames_.erase(frame);
36 hidden_frames_.remove(frame);
37 }
38
39 void FrameMemoryManager::SetFrameVisibility(FrameContainer* frame,
40 bool visible) {
41 if (visible) {
42 hidden_frames_.remove(frame);
43 visible_frames_.insert(frame);
44 } else {
45 visible_frames_.erase(frame);
46 hidden_frames_.push_front(frame);
47 CullHiddenFrames();
48 }
49 }
50
51 FrameMemoryManager::FrameMemoryManager() {}
52
53 FrameMemoryManager::~FrameMemoryManager() {}
54
55 void FrameMemoryManager::CullHiddenFrames() {
56 while (!hidden_frames_.empty() &&
57 hidden_frames_.size() + visible_frames_.size() >
58 MaxNumberOfSavedFrames()) {
59 size_t old_size = hidden_frames_.size();
60 // Should remove self from list.
61 hidden_frames_.back()->ReleaseCurrentFrame();
62 DCHECK_EQ(hidden_frames_.size() + 1, old_size);
63 }
64 }
65
66 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/frame_memory_manager.h ('k') | content/browser/renderer_host/render_widget_host_view_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698