X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FRes.java;h=196bb2c04146f01f7c6c14d67019b1db72f22f45;hb=6a96430e10e27fc1de5754cb5add705f929dd109;hp=6bf79a382552228620a167a60f91dc54f7b0b15b;hpb=81bb6c152f30f56b093cf0670cca3640a5c47ae2;p=org.ibex.core.git diff --git a/src/org/xwt/Res.java b/src/org/xwt/Res.java index 6bf79a3..196bb2c 100644 --- a/src/org/xwt/Res.java +++ b/src/org/xwt/Res.java @@ -22,8 +22,10 @@ public abstract class Res extends JS { public Res getParent() { return null; } /** an InputStream that makes sure it is not in the MessageQueue when blocked on a read */ + // FIXME private static class BackgroundInputStream extends FilterInputStream { BackgroundInputStream(InputStream i) { super(i); } + /* private void suspend() throws IOException { if (!ThreadMessage.suspendThread()) throw new IOException("attempt to perform background-only operation in a foreground thread"); @@ -41,6 +43,7 @@ public abstract class Res extends JS { try { return super.read(b, off, len); } finally { resume(); } } + */ } /** returns an InputStream containing the Resource's contents */ @@ -201,8 +204,8 @@ public abstract class Res extends JS { /** shadow resource which replaces the graft */ public static class ProgressWatcher extends Res { final Res watchee; - JS.Callable callback; - ProgressWatcher(Res watchee, JS.Callable callback) { this.watchee = watchee; this.callback = callback; } + JS.CompiledFunction callback; + ProgressWatcher(Res watchee, JS.CompiledFunction callback) { this.watchee = watchee; this.callback = callback; } public String getDescriptiveName() { return watchee.getDescriptiveName(); } public InputStream getInputStream(String s) throws IOException { final InputStream is = watchee.getInputStream(s); @@ -216,11 +219,12 @@ public abstract class Res extends JS { public int read(byte[] b, int off, int len) throws IOException { int ret = super.read(b, off, len); if (ret != 1) bytesDownloaded += ret; - ThreadMessage.newthread(new JS.Callable() { public Object call(JS.Array a) { + Scheduler.add(new Scheduler.Task() { public Object call(Object arg) { JS.Array args = new JS.Array(); args.addElement(new Integer(bytesDownloaded)); args.addElement(new Integer(is instanceof KnownLength ? ((KnownLength)is).getLength() : 0)); - callback.call(args); + // FIXME + // new JS.Thread(callback, callbackScope).resume(); return null; } }); return ret;