| Index: ipc/ipc_sync_message_filter.cc
|
| diff --git a/ipc/ipc_sync_message_filter.cc b/ipc/ipc_sync_message_filter.cc
|
| index f6d485dd4b77d96ec81ba4395142ecb7750d0179..1a6f6d9255a723d2a98bb938e3d0331d2e7885d9 100644
|
| --- a/ipc/ipc_sync_message_filter.cc
|
| +++ b/ipc/ipc_sync_message_filter.cc
|
| @@ -71,10 +71,10 @@ bool SyncMessageFilter::Send(Message* message) {
|
| }
|
|
|
| void SyncMessageFilter::OnFilterAdded(Sender* sender) {
|
| - sender_ = sender;
|
| std::vector<Message*> pending_messages;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| + sender_ = sender;
|
| io_task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
| pending_messages_.release(&pending_messages);
|
| }
|
| @@ -83,11 +83,13 @@ void SyncMessageFilter::OnFilterAdded(Sender* sender) {
|
| }
|
|
|
| void SyncMessageFilter::OnChannelError() {
|
| + base::AutoLock auto_lock(lock_);
|
| sender_ = NULL;
|
| SignalAllEvents();
|
| }
|
|
|
| void SyncMessageFilter::OnChannelClosing() {
|
| + base::AutoLock auto_lock(lock_);
|
| sender_ = NULL;
|
| SignalAllEvents();
|
| }
|
| @@ -129,6 +131,7 @@ void SyncMessageFilter::SendOnIOThread(Message* message) {
|
| if (message->is_sync()) {
|
| // We don't know which thread sent it, but it doesn't matter, just signal
|
| // them all.
|
| + base::AutoLock auto_lock(lock_);
|
| SignalAllEvents();
|
| }
|
|
|
| @@ -136,7 +139,7 @@ void SyncMessageFilter::SendOnIOThread(Message* message) {
|
| }
|
|
|
| void SyncMessageFilter::SignalAllEvents() {
|
| - base::AutoLock auto_lock(lock_);
|
| + lock_.AssertAcquired();
|
| for (PendingSyncMessages::iterator iter = pending_sync_messages_.begin();
|
| iter != pending_sync_messages_.end(); ++iter) {
|
| (*iter)->done_event->Signal();
|
|
|