[Gtk] RunLoop::run shuold run current thread's run loop.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Feb 2013 02:41:21 +0000 (02:41 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Feb 2013 02:41:21 +0000 (02:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=107887

Patch by Seulgi Kim <seulgikim@company100.net> on 2013-02-07
Reviewed by Martin Robinson.

Currently, RunLoop in Gtk can use just main thread's event loop.
But the other ports are implemented to use RunLoop in sub threads.

This patch makes RunLoop constructor create new context, not use default
context.
But in the main thread still uses default context to use main event loop
since there is some codes using glib directly (e.g. in
LayerTreeHostGtk::scheduleLayerFlush).

No new tests. There is no case that uses RunLoop in off the main thread
yet.

* platform/gtk/RunLoopGtk.cpp:
(WebCore::RunLoop::RunLoop):
(WebCore::RunLoop::run):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142219 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/gtk/RunLoopGtk.cpp

index 9f8e4cd688ae0ccc410aad3aaa759a49e835978b..d8da8cd89ba5ed655154673ad4fd55014d4d38aa 100644 (file)
@@ -1,3 +1,26 @@
+2013-02-07  Seulgi Kim  <seulgikim@company100.net>
+
+        [Gtk] RunLoop::run shuold run current thread's run loop.
+        https://bugs.webkit.org/show_bug.cgi?id=107887
+
+        Reviewed by Martin Robinson.
+
+        Currently, RunLoop in Gtk can use just main thread's event loop.
+        But the other ports are implemented to use RunLoop in sub threads.
+
+        This patch makes RunLoop constructor create new context, not use default
+        context.
+        But in the main thread still uses default context to use main event loop
+        since there is some codes using glib directly (e.g. in
+        LayerTreeHostGtk::scheduleLayerFlush).
+
+        No new tests. There is no case that uses RunLoop in off the main thread
+        yet.
+
+        * platform/gtk/RunLoopGtk.cpp:
+        (WebCore::RunLoop::RunLoop):
+        (WebCore::RunLoop::run):
+
 2013-02-07  Kentaro Hara  <haraken@chromium.org>
 
         [V8] Move V8DOMWrapper::setNamedHiddenReference() to V8HiddenPropertyName.h
index e6ee6c0f5532eefc6d1f254ef111686352954ddd..190f35ca66d220b40d4f63f7d9f6c9842757771d 100644 (file)
 #include <gdk/gdk.h>
 #include <glib.h>
 
+#include <wtf/MainThread.h>
+
 namespace WebCore {
 
 RunLoop::RunLoop()
 {
     // g_main_context_default() doesn't add an extra reference.
-    m_runLoopContext = g_main_context_default();
+    m_runLoopContext = isMainThread() ? g_main_context_default() : adoptGRef(g_main_context_new());
     ASSERT(m_runLoopContext);
     GRefPtr<GMainLoop> innermostLoop = adoptGRef(g_main_loop_new(m_runLoopContext.get(), FALSE));
     ASSERT(innermostLoop);
@@ -53,7 +55,7 @@ RunLoop::~RunLoop()
 
 void RunLoop::run()
 {
-    RunLoop* mainRunLoop = RunLoop::main();
+    RunLoop* mainRunLoop = RunLoop::current();
     GMainLoop* innermostLoop = mainRunLoop->innermostLoop();
     if (!g_main_loop_is_running(innermostLoop)) {
         g_main_loop_run(innermostLoop);