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

Side by Side Diff: base/memory/memory_pressure_listener.cc

Issue 2667513003: Remove some LazyInstance use in base/ (Closed)
Patch Set: no message_window Created 3 years, 10 months 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/memory_pressure_listener.h" 5 #include "base/memory/memory_pressure_listener.h"
6 6
7 #include "base/lazy_instance.h"
8 #include "base/observer_list_threadsafe.h" 7 #include "base/observer_list_threadsafe.h"
9 #include "base/trace_event/trace_event.h" 8 #include "base/trace_event/trace_event.h"
10 9
11 namespace base { 10 namespace base {
12 11
13 namespace { 12 namespace {
14 13
15 class MemoryPressureObserver { 14 class MemoryPressureObserver {
16 public: 15 public:
17 MemoryPressureObserver() 16 MemoryPressureObserver()
(...skipping 26 matching lines...) Expand all
44 43
45 private: 44 private:
46 scoped_refptr<ObserverListThreadSafe<MemoryPressureListener>> 45 scoped_refptr<ObserverListThreadSafe<MemoryPressureListener>>
47 async_observers_; 46 async_observers_;
48 ObserverList<MemoryPressureListener>* sync_observers_; 47 ObserverList<MemoryPressureListener>* sync_observers_;
49 Lock sync_observers_lock_; 48 Lock sync_observers_lock_;
50 49
51 DISALLOW_COPY_AND_ASSIGN(MemoryPressureObserver); 50 DISALLOW_COPY_AND_ASSIGN(MemoryPressureObserver);
52 }; 51 };
53 52
54 LazyInstance<MemoryPressureObserver>::Leaky g_observer = 53 MemoryPressureObserver* GetMemoryPressureObserver() {
55 LAZY_INSTANCE_INITIALIZER; 54 static auto observer = new MemoryPressureObserver();
55 return observer;
56 }
56 57
57 subtle::Atomic32 g_notifications_suppressed = 0; 58 subtle::Atomic32 g_notifications_suppressed = 0;
58 59
59 } // namespace 60 } // namespace
60 61
61 MemoryPressureListener::MemoryPressureListener( 62 MemoryPressureListener::MemoryPressureListener(
62 const MemoryPressureListener::MemoryPressureCallback& callback) 63 const MemoryPressureListener::MemoryPressureCallback& callback)
63 : callback_(callback) { 64 : callback_(callback) {
64 g_observer.Get().AddObserver(this, false); 65 GetMemoryPressureObserver()->AddObserver(this, false);
65 } 66 }
66 67
67 MemoryPressureListener::MemoryPressureListener( 68 MemoryPressureListener::MemoryPressureListener(
68 const MemoryPressureListener::MemoryPressureCallback& callback, 69 const MemoryPressureListener::MemoryPressureCallback& callback,
69 const MemoryPressureListener::SyncMemoryPressureCallback& 70 const MemoryPressureListener::SyncMemoryPressureCallback&
70 sync_memory_pressure_callback) 71 sync_memory_pressure_callback)
71 : callback_(callback), 72 : callback_(callback),
72 sync_memory_pressure_callback_(sync_memory_pressure_callback) { 73 sync_memory_pressure_callback_(sync_memory_pressure_callback) {
73 g_observer.Get().AddObserver(this, true); 74 GetMemoryPressureObserver()->AddObserver(this, true);
74 } 75 }
75 76
76 MemoryPressureListener::~MemoryPressureListener() { 77 MemoryPressureListener::~MemoryPressureListener() {
77 g_observer.Get().RemoveObserver(this); 78 GetMemoryPressureObserver()->RemoveObserver(this);
78 } 79 }
79 80
80 void MemoryPressureListener::Notify(MemoryPressureLevel memory_pressure_level) { 81 void MemoryPressureListener::Notify(MemoryPressureLevel memory_pressure_level) {
81 callback_.Run(memory_pressure_level); 82 callback_.Run(memory_pressure_level);
82 } 83 }
83 84
84 void MemoryPressureListener::SyncNotify( 85 void MemoryPressureListener::SyncNotify(
85 MemoryPressureLevel memory_pressure_level) { 86 MemoryPressureLevel memory_pressure_level) {
86 if (!sync_memory_pressure_callback_.is_null()) { 87 if (!sync_memory_pressure_callback_.is_null()) {
87 sync_memory_pressure_callback_.Run(memory_pressure_level); 88 sync_memory_pressure_callback_.Run(memory_pressure_level);
(...skipping 28 matching lines...) Expand all
116 MemoryPressureLevel memory_pressure_level) { 117 MemoryPressureLevel memory_pressure_level) {
117 // Notify all listeners even if regular pressure notifications are suppressed. 118 // Notify all listeners even if regular pressure notifications are suppressed.
118 DoNotifyMemoryPressure(memory_pressure_level); 119 DoNotifyMemoryPressure(memory_pressure_level);
119 } 120 }
120 121
121 // static 122 // static
122 void MemoryPressureListener::DoNotifyMemoryPressure( 123 void MemoryPressureListener::DoNotifyMemoryPressure(
123 MemoryPressureLevel memory_pressure_level) { 124 MemoryPressureLevel memory_pressure_level) {
124 DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE); 125 DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
125 126
126 g_observer.Get().Notify(memory_pressure_level); 127 GetMemoryPressureObserver()->Notify(memory_pressure_level);
127 } 128 }
128 129
129 } // namespace base 130 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698