help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-smalltalk] [PATCH 3/3] gst-sunit: Spawn the event loop last to avo


From: Holger Hans Peter Freyther
Subject: [Help-smalltalk] [PATCH 3/3] gst-sunit: Spawn the event loop last to avoid crashes
Date: Sun, 20 Jul 2014 17:50:04 +0200

It was possible that while we started to show the VisualGST
window GTK+ would call back into Smalltalk and we would run
the Glib dispatch while showing the window. This lead to a
timer expiring on a non-fully realized window and leading to
a crash inside GTK+/X11.

Run the event loop after we have intitialized all of the
VisualGST code.

2014-07-20  Holger Hans Peter Freyther  <address@hidden>

        * scripts/Test.st: Spawn the event loop last.
---
 ChangeLog       |  4 ++++
 scripts/Test.st | 11 ++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index db932dd..73738d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-07-20  Holger Hans Peter Freyther  <address@hidden>
+
+       * scripts/Test.st: Spawn the event loop last.
+
 2014-06-21  Holger Hans Peter Freyther  <address@hidden>
 
        * kernel/RecursionLock.st: Return the result of >>#critical:
diff --git a/scripts/Test.st b/scripts/Test.st
index 28409bb..20e552d 100644
--- a/scripts/Test.st
+++ b/scripts/Test.st
@@ -56,12 +56,8 @@ Object subclass: SUnitUnhandledDebugger [
         LoadedDebugger := true.
         PackageLoader fileInPackage: 'VisualGST'.
 
-        "Start the event-loop and avoid scope look-ups. This is why
-        we look-up the class by hand."
-        [
-            ((Smalltalk at: #VisualGST) at: #TaskQueue) uniqueInstance run.
-            ((Smalltalk at: #GTK) at: #Gtk) main
-        ] fork.
+        "Start to run the VisualGST task queue"
+        ((Smalltalk at: #VisualGST) at: #TaskQueue) uniqueInstance run.
     ]
 
     SUnitUnhandledDebugger class >> keepRunningOnFailure [
@@ -70,7 +66,8 @@ Object subclass: SUnitUnhandledDebugger [
     ]
 
     SUnitUnhandledDebugger class >> keepRunning [
-        Semaphore new wait
+        Processor activeProcess name: 'Main-loop for SUnit'.
+        ((Smalltalk at: #GTK) at: #Gtk) main
     ]
 ]
 
-- 
2.0.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]