diff --git a/libcef/browser/main_runner.cc b/libcef/browser/main_runner.cc index 65d644bc3..82916923e 100644 --- a/libcef/browser/main_runner.cc +++ b/libcef/browser/main_runner.cc @@ -394,6 +394,7 @@ bool CefMainRunner::ContentMainRun(bool* initialized, if (!CreateUIThread(base::BindOnce( [](CefMainRunner* runner, base::WaitableEvent* event) { + runner->main_delegate_->BeforeUIThreadInitialize(); content::ContentMainRun(runner->main_runner_.get()); event->Signal(); }, @@ -408,6 +409,7 @@ bool CefMainRunner::ContentMainRun(bool* initialized, uithread_startup_event.Wait(); } else { *initialized = true; + main_delegate_->BeforeUIThreadInitialize(); content::ContentMainRun(main_runner_.get()); } diff --git a/libcef/common/chrome/chrome_main_runner_delegate.cc b/libcef/common/chrome/chrome_main_runner_delegate.cc index 70aba7216..57a92d931 100644 --- a/libcef/common/chrome/chrome_main_runner_delegate.cc +++ b/libcef/common/chrome/chrome_main_runner_delegate.cc @@ -40,8 +40,6 @@ void ChromeMainRunnerDelegate::BeforeMainThreadInitialize( #else base::CommandLine::Init(args.argc, args.argv); #endif - - sampling_profiler_ = std::make_unique(); } void ChromeMainRunnerDelegate::BeforeMainMessageLoopRun( @@ -70,14 +68,16 @@ bool ChromeMainRunnerDelegate::HandleMainMessageLoopQuit() { return true; } +void ChromeMainRunnerDelegate::BeforeUIThreadInitialize() { + sampling_profiler_ = std::make_unique(); +} + void ChromeMainRunnerDelegate::AfterUIThreadShutdown() { static_cast( CefAppManager::Get()->GetContentClient()->browser()) ->CleanupOnUIThread(); main_delegate_->CleanupOnUIThread(); -} -void ChromeMainRunnerDelegate::AfterMainThreadShutdown() { sampling_profiler_.reset(); } diff --git a/libcef/common/chrome/chrome_main_runner_delegate.h b/libcef/common/chrome/chrome_main_runner_delegate.h index a153d7814..970cecd10 100644 --- a/libcef/common/chrome/chrome_main_runner_delegate.h +++ b/libcef/common/chrome/chrome_main_runner_delegate.h @@ -35,8 +35,8 @@ class ChromeMainRunnerDelegate : public CefMainRunnerDelegate { void BeforeMainThreadInitialize(const CefMainArgs& args) override; void BeforeMainMessageLoopRun(base::RunLoop* run_loop) override; bool HandleMainMessageLoopQuit() override; + void BeforeUIThreadInitialize() override; void AfterUIThreadShutdown() override; - void AfterMainThreadShutdown() override; void BeforeExecuteProcess(const CefMainArgs& args) override; void AfterExecuteProcess() override; diff --git a/libcef/common/main_runner_delegate.h b/libcef/common/main_runner_delegate.h index 2f9224ea4..335ab2b88 100644 --- a/libcef/common/main_runner_delegate.h +++ b/libcef/common/main_runner_delegate.h @@ -24,6 +24,7 @@ class CefMainRunnerDelegate { virtual void BeforeMainThreadRun() {} virtual void BeforeMainMessageLoopRun(base::RunLoop* run_loop) {} virtual bool HandleMainMessageLoopQuit() { return false; } + virtual void BeforeUIThreadInitialize() {} virtual void AfterUIThreadInitialize() {} virtual void AfterUIThreadShutdown() {} virtual void BeforeMainThreadShutdown() {}