summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2014-05-16 13:34:31 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-06-26 09:57:50 +0000
commitd00f32b32fa43f35f0bcdd9f258ce6bf1b08051f (patch)
tree7a68d4c7c9ac6a9ade6a36950d744cb1bea3778b
parentafdb6e8303821a6becfeb458c257f01a5adae593 (diff)
downloadqtwebengine-chromium-d00f32b32fa43f35f0bcdd9f258ce6bf1b08051f.tar.gz
<chromium> Fix Renderer and GPU threads on windows
These threads are using the UI message loop on Windows per default. This won't work since the UI message loop is handled by Qt and the Renderer and GPU threads won't work with it properly. Force these threads for using the default message loop as they use it on Linux platform. Change-Id: I8b04ba9070912378cf1d13173ddff48e98f9a49b Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
-rw-r--r--chromium/content/browser/browser_main_loop.cc2
-rw-r--r--chromium/content/browser/gpu/gpu_process_host.cc2
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.cc2
-rw-r--r--chromium/content/gpu/gpu_main.cc4
4 files changed, 7 insertions, 3 deletions
diff --git a/chromium/content/browser/browser_main_loop.cc b/chromium/content/browser/browser_main_loop.cc
index 456bc14ece3..052a87c30ae 100644
--- a/chromium/content/browser/browser_main_loop.cc
+++ b/chromium/content/browser/browser_main_loop.cc
@@ -802,7 +802,7 @@ int BrowserMainLoop::CreateThreads() {
"BrowserMainLoop::CreateThreads:start",
"Thread", "BrowserThread::FILE");
thread_to_start = &file_thread_;
-#if defined(OS_WIN)
+#if defined(OS_WIN) && !defined(TOOLKIT_QT)
// On Windows, the FILE thread needs to be have a UI message loop
// which pumps messages in such a way that Google Update can
// communicate back to us.
diff --git a/chromium/content/browser/gpu/gpu_process_host.cc b/chromium/content/browser/gpu/gpu_process_host.cc
index 5ad53405fac..54b37e8158b 100644
--- a/chromium/content/browser/gpu/gpu_process_host.cc
+++ b/chromium/content/browser/gpu/gpu_process_host.cc
@@ -513,7 +513,7 @@ bool GpuProcessHost::Init() {
g_gpu_main_thread_factory(InProcessChildThreadParams(
channel_id, base::MessageLoop::current()->task_runner())));
base::Thread::Options options;
-#if defined(OS_WIN)
+#if defined(OS_WIN) && !defined(TOOLKIT_QT)
// WGL needs to create its own window and pump messages on it.
options.message_loop_type = base::MessageLoop::TYPE_UI;
#endif
diff --git a/chromium/content/browser/renderer_host/render_process_host_impl.cc b/chromium/content/browser/renderer_host/render_process_host_impl.cc
index f0f19963ff6..dbf2b45c833 100644
--- a/chromium/content/browser/renderer_host/render_process_host_impl.cc
+++ b/chromium/content/browser/renderer_host/render_process_host_impl.cc
@@ -645,7 +645,7 @@ bool RenderProcessHostImpl::Init() {
BrowserThread::IO)->task_runner())));
base::Thread::Options options;
-#if defined(OS_WIN) && !defined(OS_MACOSX)
+#if defined(OS_WIN) && !defined(OS_MACOSX) && !defined(TOOLKIT_QT)
// In-process plugins require this to be a UI message loop.
options.message_loop_type = base::MessageLoop::TYPE_UI;
#else
diff --git a/chromium/content/gpu/gpu_main.cc b/chromium/content/gpu/gpu_main.cc
index c6a59fc9c19..3f0a2d4f047 100644
--- a/chromium/content/gpu/gpu_main.cc
+++ b/chromium/content/gpu/gpu_main.cc
@@ -162,7 +162,11 @@ int GpuMain(const MainFunctionParams& parameters) {
#if defined(OS_WIN)
// Use a UI message loop because ANGLE and the desktop GL platform can
// create child windows to render to.
+#if defined(TOOLKIT_QT)
+ base::MessageLoop main_message_loop(base::MessageLoop::TYPE_DEFAULT);
+#else
base::MessageLoop main_message_loop(base::MessageLoop::TYPE_UI);
+#endif
#elif defined(OS_LINUX) && defined(USE_X11)
// We need a UI loop so that we can grab the Expose events. See GLSurfaceGLX
// and https://crbug.com/326995.