2003/09/19 05:26:46
[org.ibex.core.git] / src / org / xwt / plat / Win32.java
index 3e647ac..ddd6116 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2002 Adam Megacz, see the COPYING file for licensing [LGPL]
+// Copyright 2003 Adam Megacz, see the COPYING file for licensing [LGPL]
 package org.xwt.plat;
 
 import org.xwt.*;
@@ -84,6 +84,14 @@ public class Win32 extends GCJ {
         int maxDescent;
     }
 
+        /** Called once XWT is initialized and the application is running. On Win32, we need to block the main thread
+        *       on a semaphore because if the main thread exits, the whole application quits. */
+        protected void _running() {
+                // gcj-win32 exit()'s when the original thread dies, so we have to deadlock ourselves
+                if (Log.on) Log.log(Main.class, "main thread blocking on new semaphore");
+                new org.xwt.util.Semaphore().block();
+        }
+
     /** takes a parsed font and finds the closest platform-specific font */
     static native Win32Font mapFont(Platform.ParsedFont pf);
 
@@ -251,7 +259,7 @@ public class Win32 extends GCJ {
 
     // Win32Picture ////////////////////////////////////////////////////////////////////////////
 
-    public static class Win32Picture implements Picture {
+    public static class Win32Picture extends Picture {
         int w = 0, h = 0;
         int[] data = null;
 
@@ -283,7 +291,7 @@ public class Win32 extends GCJ {
 
     // Win32DoubleBuffer //////////////////////////////////////////////////////////////////////////
 
-    public static class Win32DoubleBuffer implements DoubleBuffer {
+    public static class Win32DoubleBuffer extends DoubleBuffer {
 
         int w = 0;
         int h = 0;