diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-09 08:05:55 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-09 08:05:55 +0000 |
commit | 47148a3c6b63d19dd2d33d61537d953f76ce0e2c (patch) | |
tree | 7a8f679b97168e64b87b36a50d813874e2dd4bd5 | |
parent | 31a2bfeeba9a52f4dc651672aeeee9a66edae3b3 (diff) | |
download | chromium_src-47148a3c6b63d19dd2d33d61537d953f76ce0e2c.zip chromium_src-47148a3c6b63d19dd2d33d61537d953f76ce0e2c.tar.gz chromium_src-47148a3c6b63d19dd2d33d61537d953f76ce0e2c.tar.bz2 |
Fix thread safety issue in AudioMessageFilter. IPC::Channel can only be used on the IO thread.
Review URL: http://codereview.chromium.org/600002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38454 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/renderer/audio_message_filter.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/chrome/renderer/audio_message_filter.cc b/chrome/renderer/audio_message_filter.cc index de209d9..d9c3a44 100644 --- a/chrome/renderer/audio_message_filter.cc +++ b/chrome/renderer/audio_message_filter.cc @@ -23,6 +23,15 @@ bool AudioMessageFilter::Send(IPC::Message* message) { delete message; return false; } + + if (MessageLoop::current() != message_loop_) { + // Can only access the IPC::Channel on the IPC thread since it's not thread + // safe. + message_loop_->PostTask( + FROM_HERE, NewRunnableMethod(this, &AudioMessageFilter::Send, message)); + return true; + } + message->set_routing_id(route_id_); return channel_->Send(message); } |