summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2014-05-16 13:34:31 +0200
committerAndras Becsi <andras.becsi@digia.com>2014-06-04 18:15:39 +0200
commit660bf670f40c9feba12f038bcc9e4b620b853803 (patch)
tree2d8f164c90e3dcb282f661ece1c24dc241519213
parent5beb9a3ceb88fb4c0fa0e57e94b0648dd4b2da4f (diff)
downloadqtwebengine-chromium-660bf670f40c9feba12f038bcc9e4b620b853803.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. Reviewed-by: Andras Becsi <andras.becsi@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com> Change-Id: I8b04ba9070912378cf1d13173ddff48e98f9a49b Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
-rw-r--r--chromium/content/browser/browser_main_loop.cc2
-rw-r--r--chromium/content/browser/gpu/gpu_process_host.cc6
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.cc2
-rw-r--r--chromium/content/renderer/renderer_main.cc2
4 files changed, 10 insertions, 2 deletions
diff --git a/chromium/content/browser/browser_main_loop.cc b/chromium/content/browser/browser_main_loop.cc
index 1930bc083a7..c2787e08c72 100644
--- a/chromium/content/browser/browser_main_loop.cc
+++ b/chromium/content/browser/browser_main_loop.cc
@@ -654,7 +654,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 1b7da1c8d7c..c28ba8b7499 100644
--- a/chromium/content/browser/gpu/gpu_process_host.cc
+++ b/chromium/content/browser/gpu/gpu_process_host.cc
@@ -577,7 +577,13 @@ bool GpuProcessHost::Init() {
switches::kDisableGpuWatchdog);
in_process_gpu_thread_.reset(g_gpu_main_thread_factory(channel_id));
+#if defined(OS_WIN) && defined(TOOLKIT_QT)
+ base::Thread::Options options;
+ options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
+ in_process_gpu_thread_->StartWithOptions(options);
+#else
in_process_gpu_thread_->Start();
+#endif
OnProcessLaunched(); // Fake a callback that the process is ready.
} else if (!LaunchGpuProcess(channel_id)) {
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 5d975e9119d..b5a5c497106 100644
--- a/chromium/content/browser/renderer_host/render_process_host_impl.cc
+++ b/chromium/content/browser/renderer_host/render_process_host_impl.cc
@@ -512,7 +512,7 @@ bool RenderProcessHostImpl::Init() {
in_process_renderer_.reset(g_renderer_main_thread_factory(channel_id));
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/renderer/renderer_main.cc b/chromium/content/renderer/renderer_main.cc
index f0c16d27815..5330d21a564 100644
--- a/chromium/content/renderer/renderer_main.cc
+++ b/chromium/content/renderer/renderer_main.cc
@@ -161,6 +161,8 @@ int RendererMain(const MainFunctionParams& parameters) {
// As long as we use Cocoa in the renderer (for the forseeable future as of
// now; see http://crbug.com/306348 for info) we need to have a UI loop.
base::MessageLoop main_message_loop(base::MessageLoop::TYPE_UI);
+#elif defined(OS_WIN) && defined(TOOLKIT_QT)
+ base::MessageLoop main_message_loop(base::MessageLoop::TYPE_DEFAULT);
#else
// The main message loop of the renderer services doesn't have IO or UI tasks,
// unless in-process-plugins is used.