X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FMain.java;h=4eabbce6d471518b907fd9e2da96a0281b2705bd;hb=89152b4505ee3435af5396582e25ef45bd48f290;hp=f7a1d69f2a0fb96a097fc53c4084b383026b30e1;hpb=9d16bf3833efc79815718cdaff95515da1090262;p=org.ibex.core.git diff --git a/src/org/xwt/Main.java b/src/org/xwt/Main.java index f7a1d69..4eabbce 100644 --- a/src/org/xwt/Main.java +++ b/src/org/xwt/Main.java @@ -8,6 +8,7 @@ import java.net.*; import java.util.*; import java.io.*; import java.awt.*; +import org.mozilla.javascript.*; import org.bouncycastle.util.encoders.Base64; /** Entry point for the XWT Engine; handles splash screen, initial xwar loading, and argument processing */ @@ -34,6 +35,9 @@ public class Main extends Applet { public static Applet applet = null; + /** don't check if all surfaces are gone (and quit) until this is true */ + public static boolean doneInitializing = false; + /** applet entry point */ public void init() { if ("true".equals(getParameter("showRenders"))) showRenders = true; @@ -48,22 +52,24 @@ public class Main extends Applet { int startargs = 0; while (true) { if (startargs > args.length - 1) { - System.out.println("Usage: xwt [-s] [-v] source-location [initial-template]"); - System.out.println(""); - System.out.println("Options:"); - System.out.println(" -s show rendering activity with red rectangles"); - System.out.println(" -v verbose logging"); - System.out.println(""); - System.out.println("Source-location is one of the following:"); - System.out.println(" - the path to an xwar file"); - System.out.println(" - the path to a directory to be used as an xwar"); - System.out.println(" - the http url of an xwar"); - System.out.println(""); - System.out.println("Initial-template is the resource name of the template to load; defaults to 'main'"); + System.err.println("Usage: xwt [-s] [-v] [-l /] source-location [initial-template]"); + System.err.println(""); + System.err.println("Options:"); + System.err.println(" -s show rendering activity with red rectangles"); + System.err.println(" -v verbose logging"); + System.err.println(" -l serve logs via HTTP on 127.0.0.1:/"); + System.err.println(""); + System.err.println("Source-location is one of the following:"); + System.err.println(" - the path to an xwar file"); + System.err.println(" - the path to a directory to be used as an xwar"); + System.err.println(" - the http url of an xwar"); + System.err.println(""); + System.err.println("Initial-template is the resource name of the template to load; defaults to 'main'"); Runtime.getRuntime().exit(-1); } else if (args[startargs].equals("-s")) showRenders = true; else if (args[startargs].equals("-v")) Log.verbose = true; + else if (args[startargs].equals("-l")) startargs++; // FIXME else break; startargs++; } @@ -77,7 +83,7 @@ public class Main extends Applet { PNG png = PNG.decode(new ByteArrayInputStream(Base64.decode(scarPicture_png_base64)), "bundled scar image"); Surface.scarPicture = Platform.createPicture(png.getData(), png.getWidth(), png.getHeight()); - InputStream is = Main.class.getClassLoader().getResourceAsStream("org/xwt/builtin.xwar"); + InputStream is = Platform.getBuiltinInputStream(); if (is == null) Platform.criticalAbort("unable to load builtin.xwar"); Resources.loadArchive(is); @@ -100,6 +106,7 @@ public class Main extends Applet { origin = "file:" + f.getAbsolutePath(); if (f.isDirectory()) { Resources.loadDirectory(f); + Surface.scarAllSurfacesFromNowOn = true; } else { initialTemplate = "org.xwt.builtin.splash"; } @@ -110,9 +117,15 @@ public class Main extends Applet { if (Log.on) Log.log(Main.class, "instantiating " + initialTemplate); final String initialTemplate_f = initialTemplate; - MessageQueue.add(new Message() { - public void perform() { + ThreadMessage.newthread(new JSObject.JSFunction() { + public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] arg) throws JavaScriptException { new Box(initialTemplate_f, null); + doneInitializing = true; + if (Surface.allSurfaces.size() == 0) { + Log.log(this, "exiting because all surfaces are gone"); + Platform.exit(); + } + return null; } });