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

Side by Side Diff: webrtc/base/asyncinvoker.h

Issue 2846593005: Relanding #2: Fixing crash that can occur if signal is modified while firing. (Closed)
Patch Set: Fixing issue with disconnect_all, adding test, simplifying code a bit Created 3 years, 7 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
« no previous file with comments | « no previous file | webrtc/base/asyncinvoker.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2014 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 DoInvoke(posted_from, thread, std::move(closure), id); 137 DoInvoke(posted_from, thread, std::move(closure), id);
138 } 138 }
139 139
140 // Synchronously execute on |thread| all outstanding calls we own 140 // Synchronously execute on |thread| all outstanding calls we own
141 // that are pending on |thread|, and wait for calls to complete 141 // that are pending on |thread|, and wait for calls to complete
142 // before returning. Optionally filter by message id. 142 // before returning. Optionally filter by message id.
143 // The destructor will not wait for outstanding calls, so if that 143 // The destructor will not wait for outstanding calls, so if that
144 // behavior is desired, call Flush() before destroying this object. 144 // behavior is desired, call Flush() before destroying this object.
145 void Flush(Thread* thread, uint32_t id = MQID_ANY); 145 void Flush(Thread* thread, uint32_t id = MQID_ANY);
146 146
147 // Signaled when this object is destructed.
148 sigslot::signal0<> SignalInvokerDestroyed;
149
150 private: 147 private:
151 void OnMessage(Message* msg) override; 148 void OnMessage(Message* msg) override;
152 void DoInvoke(const Location& posted_from, 149 void DoInvoke(const Location& posted_from,
153 Thread* thread, 150 Thread* thread,
154 std::unique_ptr<AsyncClosure> closure, 151 std::unique_ptr<AsyncClosure> closure,
155 uint32_t id); 152 uint32_t id);
156 void DoInvokeDelayed(const Location& posted_from, 153 void DoInvokeDelayed(const Location& posted_from,
157 Thread* thread, 154 Thread* thread,
158 std::unique_ptr<AsyncClosure> closure, 155 std::unique_ptr<AsyncClosure> closure,
159 uint32_t delay_ms, 156 uint32_t delay_ms,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 void ThreadDestroyed(); 249 void ThreadDestroyed();
253 250
254 CriticalSection crit_; 251 CriticalSection crit_;
255 Thread* thread_ GUARDED_BY(crit_); 252 Thread* thread_ GUARDED_BY(crit_);
256 AsyncInvoker invoker_ GUARDED_BY(crit_); 253 AsyncInvoker invoker_ GUARDED_BY(crit_);
257 }; 254 };
258 255
259 } // namespace rtc 256 } // namespace rtc
260 257
261 #endif // WEBRTC_BASE_ASYNCINVOKER_H_ 258 #endif // WEBRTC_BASE_ASYNCINVOKER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/base/asyncinvoker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698