diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser_main.cc | 2 | ||||
-rw-r--r-- | chrome/browser/browser_main_win.cc | 2 | ||||
-rw-r--r-- | chrome/browser/browser_process_impl.cc | 19 | ||||
-rw-r--r-- | chrome/browser/browser_process_impl.h | 16 |
4 files changed, 23 insertions, 16 deletions
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index b93b7ff..e8bceff 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -979,8 +979,6 @@ int BrowserMain(const MainFunctionParams& parameters) { process_singleton.Cleanup(); - Platform::DidEndMainMessageLoop(); - if (metrics) metrics->Stop(); diff --git a/chrome/browser/browser_main_win.cc b/chrome/browser/browser_main_win.cc index dca1bba..7138288 100644 --- a/chrome/browser/browser_main_win.cc +++ b/chrome/browser/browser_main_win.cc @@ -31,9 +31,11 @@ namespace Platform { void WillInitializeMainMessageLoop(const MainFunctionParams& parameters) { + OleInitialize(NULL); } void DidEndMainMessageLoop() { + OleUninitialize(); } void RecordBreakpadStatusUMA(MetricsService* metrics) { diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index 54d7858..f19e6a6 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -11,6 +11,7 @@ #include "base/path_service.h" #include "base/thread.h" #include "base/waitable_event.h" +#include "chrome/browser/browser_main.h" #include "chrome/browser/browser_trial.h" #include "chrome/browser/chrome_thread.h" #include "chrome/browser/debugger/debugger_wrapper.h" @@ -251,6 +252,24 @@ static void PostQuit(MessageLoop* message_loop) { message_loop->PostTask(FROM_HERE, new MessageLoop::QuitTask()); } +unsigned int BrowserProcessImpl::AddRefModule() { + DCHECK(CalledOnValidThread()); + module_ref_count_++; + return module_ref_count_; +} + +unsigned int BrowserProcessImpl::ReleaseModule() { + DCHECK(CalledOnValidThread()); + DCHECK(0 != module_ref_count_); + module_ref_count_--; + if (0 == module_ref_count_) { + MessageLoop::current()->PostTask( + FROM_HERE, NewRunnableFunction(Platform::DidEndMainMessageLoop)); + MessageLoop::current()->Quit(); + } + return module_ref_count_; +} + void BrowserProcessImpl::EndSession() { #if defined(OS_WIN) // Notify we are going away. diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h index f4b0e7d..51d0cf5 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h @@ -164,21 +164,9 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { CreateDebuggerWrapper(port); } - virtual unsigned int AddRefModule() { - DCHECK(CalledOnValidThread()); - module_ref_count_++; - return module_ref_count_; - } + virtual unsigned int AddRefModule(); - virtual unsigned int ReleaseModule() { - DCHECK(CalledOnValidThread()); - DCHECK(0 != module_ref_count_); - module_ref_count_--; - if (0 == module_ref_count_) { - MessageLoop::current()->Quit(); - } - return module_ref_count_; - } + virtual unsigned int ReleaseModule(); virtual bool IsShuttingDown() { DCHECK(CalledOnValidThread()); |