summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser_main.cc2
-rw-r--r--chrome/browser/browser_main_win.cc2
-rw-r--r--chrome/browser/browser_process_impl.cc19
-rw-r--r--chrome/browser/browser_process_impl.h16
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());