2003/09/19 05:26:47
[org.ibex.core.git] / src / org / xwt / plat / Win32.java
index a6551df..4a14394 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);
 
@@ -111,7 +119,7 @@ public class Win32 extends GCJ {
     protected boolean _needsAutoClick() { return true; }
     protected String getDescriptiveName() { return "GCJ Win32 Binary"; }
     protected Surface _createSurface(Box b, boolean framed) { return new Win32Surface(b, framed); }
-    protected DoubleBuffer _createDoubleBuffer(int w, int h, Surface owner) { return new Win32DoubleBuffer(w, h, (Win32Surface)owner); }
+    protected PixelBuffer _createDoubleBuffer(int w, int h, Surface owner) { return new Win32DoubleBuffer(w, h, (Win32Surface)owner); }
     protected Picture _createPicture(int[] b, int w, int h) { return new Win32Picture(b, w, h); }
     protected native int _getScreenWidth();
     protected native int _getScreenHeight();
@@ -245,7 +253,7 @@ public class Win32 extends GCJ {
         public native void setTitleBarText(String s);
         public native void setIcon(Picture p);
         public native void _dispose();
-        public native void blit(DoubleBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2);
+        public native void blit(PixelBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2);
     }
 
 
@@ -281,9 +289,9 @@ public class Win32 extends GCJ {
     }
     
 
-    // Win32DoubleBuffer //////////////////////////////////////////////////////////////////////////
+    // Win32PixelBuffer //////////////////////////////////////////////////////////////////////////
 
-    public static class Win32DoubleBuffer extends DoubleBuffer {
+    public static class Win32PixelBuffer extends DoubleBuffer {
 
         int w = 0;
         int h = 0;
@@ -300,7 +308,7 @@ public class Win32 extends GCJ {
         public int getWidth() { return w; }
 
         public native void natInit();
-        public Win32DoubleBuffer(int w, int h, Win32Surface owner) {
+        public Win32PixelBuffer(int w, int h, Win32Surface owner) {
             this.w = w;
             this.h = h;
             clipx2 = w;