summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-09 08:05:55 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-09 08:05:55 +0000
commit47148a3c6b63d19dd2d33d61537d953f76ce0e2c (patch)
tree7a8f679b97168e64b87b36a50d813874e2dd4bd5
parent31a2bfeeba9a52f4dc651672aeeee9a66edae3b3 (diff)
downloadchromium_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.cc9
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);
}