summaryrefslogtreecommitdiffstats
path: root/src/core/web_engine_context.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-08-18 09:47:34 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-08-18 10:08:28 +0200
commite53ddd7b7ec0ca766557d947031820986f11b1a2 (patch)
tree19f7d4c09af27da94bda2dd0ff647b1913b70a67 /src/core/web_engine_context.cpp
parent13d03ef21d3bd67595bd0b36be7401f6e6bcbbd6 (diff)
parentdd7b409388949bc628af75a6e65474d699c416d3 (diff)
Merge branch '5.5' into 5.6
Diffstat (limited to 'src/core/web_engine_context.cpp')
-rw-r--r--src/core/web_engine_context.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index db4cec1fc..727cfb491 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -91,6 +91,10 @@ scoped_refptr<WebEngineContext> sContext;
void destroyContext()
{
+ // Destroy WebEngineContext before its static pointer is zeroed and destructor called.
+ // Before destroying MessageLoop via destroying BrowserMainRunner destructor
+ // WebEngineContext's pointer is used.
+ sContext->destroy();
sContext = 0;
}
@@ -136,9 +140,13 @@ bool usingQtQuick2DRenderer()
} // namespace
-WebEngineContext::~WebEngineContext()
+void WebEngineContext::destroyBrowserContext()
{
m_defaultBrowserContext = 0;
+}
+
+void WebEngineContext::destroy()
+{
delete m_globalQObject;
m_globalQObject = 0;
base::MessagePump::Delegate *delegate = m_runLoop->loop_;
@@ -146,6 +154,15 @@ WebEngineContext::~WebEngineContext()
while (delegate->DoWork()) { }
GLContextHelper::destroy();
m_runLoop->AfterRun();
+
+ // Force to destroy RenderProcessHostImpl by destroying BrowserMainRunner.
+ // RenderProcessHostImpl should be destroyed before WebEngineContext since
+ // default BrowserContext might be used by the RenderprocessHostImpl's destructor.
+ m_browserRunner.reset(0);
+}
+
+WebEngineContext::~WebEngineContext()
+{
}
scoped_refptr<WebEngineContext> WebEngineContext::current()