summaryrefslogtreecommitdiffstats
path: root/base/thread.cc
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 01:26:16 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 01:26:16 +0000
commitcd636d8fb36d118a995f913920031b1f6c33fdec (patch)
treeea455370d2fb0a318ae88f6e8090cc36ad53fe67 /base/thread.cc
parentdac395fecf2ce32c37737143f3b8eb71d3ce38b3 (diff)
downloadchromium_src-cd636d8fb36d118a995f913920031b1f6c33fdec.zip
chromium_src-cd636d8fb36d118a995f913920031b1f6c33fdec.tar.gz
chromium_src-cd636d8fb36d118a995f913920031b1f6c33fdec.tar.bz2
Moved Init() before startup_data_->event.Signal() because derived
classes may not be safe to use until Init() has been called. As an example, RenderThread() creates it's IPC::SyncChannel in Init(), so it isn't safe to call Send() method until after. Update use of a Thread (hit with ui_tests) to no longer require Init() be called after the startup event is signaled (required old thread behavior). Ran a bunch more tests on Windows to try harder to make sure I didn't break anything. Review URL: http://codereview.chromium.org/18824 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8695 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/thread.cc')
-rw-r--r--base/thread.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/base/thread.cc b/base/thread.cc
index 9bc81a4..387b1c5 100644
--- a/base/thread.cc
+++ b/base/thread.cc
@@ -143,13 +143,14 @@ void Thread::ThreadMain() {
message_loop.set_thread_name(name_);
message_loop_ = &message_loop;
+ // Let the thread do extra initialization.
+ // Let's do this before signaling we are started.
+ Init();
+
startup_data_->event.Signal();
// startup_data_ can't be touched anymore since the starting thread is now
// unlocked.
- // Let the thread do extra initialization.
- Init();
-
message_loop.Run();
// Let the thread do extra cleanup.