[Gd-chatter] r11567 - trunk/fundev/sources/duim/gtk

andreas at gwydiondylan.org andreas at gwydiondylan.org
Fri Dec 21 01:38:25 CET 2007


Author: andreas
Date: Fri Dec 21 01:38:24 2007
New Revision: 11567

Modified:
   trunk/fundev/sources/duim/gtk/gtk-duim.lid
   trunk/fundev/sources/duim/gtk/gtk-events.dylan
   trunk/fundev/sources/duim/gtk/gtk-mirror.dylan
Log:
job: fd

Properly handle repaint in window thread to prevent application deadlocks.


Modified: trunk/fundev/sources/duim/gtk/gtk-duim.lid
==============================================================================
--- trunk/fundev/sources/duim/gtk/gtk-duim.lid	(original)
+++ trunk/fundev/sources/duim/gtk/gtk-duim.lid	Fri Dec 21 01:38:24 2007
@@ -22,6 +22,7 @@
         gtk-dialogs
 	gtk-help
 	gtk-clipboard
+	gtk-debug
 Other-files:   Open-Source-License.txt
 Major-version: 2
 Minor-version: 1

Modified: trunk/fundev/sources/duim/gtk/gtk-events.dylan
==============================================================================
--- trunk/fundev/sources/duim/gtk/gtk-events.dylan	(original)
+++ trunk/fundev/sources/duim/gtk/gtk-events.dylan	Fri Dec 21 01:38:24 2007
@@ -182,6 +182,7 @@
 define method handle-gtk-expose-event
     (sheet :: <sheet>, event :: <GdkEventExpose>)
  => (handled? :: <boolean>)
+  
   let _port = port(sheet);
   when (_port)
     let area = event.GdkEventExpose-area;
@@ -196,11 +197,11 @@
       = untransform-distance(native-transform, native-width, native-height);
     let region = make-bounding-box(x, y, x + width, y + height);
     distribute-event(_port,
-         make(<window-repaint-event>,
-        sheet:  sheet,
-        region: region))
+                     make(<window-repaint-event>,
+                          sheet:  sheet,
+                          region: region));
+    #f
   end;
-  #t
 end method handle-gtk-expose-event;
 
 /*---*** Not handling state changes yet

Modified: trunk/fundev/sources/duim/gtk/gtk-mirror.dylan
==============================================================================
--- trunk/fundev/sources/duim/gtk/gtk-mirror.dylan	(original)
+++ trunk/fundev/sources/duim/gtk/gtk-mirror.dylan	Fri Dec 21 01:38:24 2007
@@ -411,10 +411,11 @@
 		     sheet, x, y, width, height);
   // We call 'handle-event' instead of 'distribute-event' because we
   // want the repainting to happen between BeginPaint and EndPaint
-  handle-event(sheet,
-	       make(<window-repaint-event>,
-		    sheet: sheet,
-		    region: region))
+  distribute-event(port(sheet),
+                   make(<window-repaint-event>,
+		        sheet: sheet,
+		        region: region));
+  #f;
 end method handle-gtk-expose-event;
 
 define method set-mirror-parent



More information about the chatter mailing list