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

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

Issue 2859443002: Revert of Relanding: Fixing crash that can occur if signal is modified while firing. (Closed)
Patch Set: 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
147 private: 150 private:
148 void OnMessage(Message* msg) override; 151 void OnMessage(Message* msg) override;
149 void DoInvoke(const Location& posted_from, 152 void DoInvoke(const Location& posted_from,
150 Thread* thread, 153 Thread* thread,
151 std::unique_ptr<AsyncClosure> closure, 154 std::unique_ptr<AsyncClosure> closure,
152 uint32_t id); 155 uint32_t id);
153 void DoInvokeDelayed(const Location& posted_from, 156 void DoInvokeDelayed(const Location& posted_from,
154 Thread* thread, 157 Thread* thread,
155 std::unique_ptr<AsyncClosure> closure, 158 std::unique_ptr<AsyncClosure> closure,
156 uint32_t delay_ms, 159 uint32_t delay_ms,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 void ThreadDestroyed(); 252 void ThreadDestroyed();
250 253
251 CriticalSection crit_; 254 CriticalSection crit_;
252 Thread* thread_ GUARDED_BY(crit_); 255 Thread* thread_ GUARDED_BY(crit_);
253 AsyncInvoker invoker_ GUARDED_BY(crit_); 256 AsyncInvoker invoker_ GUARDED_BY(crit_);
254 }; 257 };
255 258
256 } // namespace rtc 259 } // namespace rtc
257 260
258 #endif // WEBRTC_BASE_ASYNCINVOKER_H_ 261 #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