2003/09/07 03:04:31
[org.ibex.core.git] / src / org / xwt / plat / Win32.java
index 6a74222..0260252 100644 (file)
@@ -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);
 
@@ -205,7 +213,7 @@ public class Win32 extends GCJ {
         boolean captured = false;
 
         public int hwnd = -1;
-        public int hdc = -1;
+        public int hdc = 0;
 
         public int current_cursor = default_cursor;
 
@@ -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;