X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FScheduler.java;h=9e939a3d87f7a55c77971268342d403004b4278e;hb=16c24a73c1c1b2955db0bbbaf5a940215329bca1;hp=f4338582b011d6e97a675f6617f273903560a98c;hpb=ef61babe77a94eba181c95a52c0069a612276dff;p=org.ibex.core.git diff --git a/src/org/xwt/Scheduler.java b/src/org/xwt/Scheduler.java index f433858..9e939a3 100644 --- a/src/org/xwt/Scheduler.java +++ b/src/org/xwt/Scheduler.java @@ -1,4 +1,4 @@ -// Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL] +// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL] package org.xwt; import java.util.*; @@ -8,29 +8,35 @@ import org.xwt.util.*; /** Implements cooperative multitasking */ public class Scheduler { - // FIXME: prepending events messes with keysate -- make a "no re-ordering" invariant? - // Public API Exposed to org.xwt ///////////////////////////////////////////////// private static Scheduler singleton; public static interface Task { public abstract void perform() throws Exception; } - - /** adds a task to the back of the queue */ public static void add(Task t) { singleton.runnable.append(t); } - - /** adds a task to the front of the queue (guaranteed to run next) */ - public static void addAtFront(Task t) { singleton.runnable.prepend(t); } - public static void init() { if (singleton == null) (singleton = Platform.getScheduler()).run(); } private static Task current = null; - public static Task current() { return current; } + + private static volatile boolean rendering = false; + private static volatile boolean again = false; /** synchronizd so that we can safely call it from an event-delivery thread, in-context */ - public static synchronized void renderAll() { - for(int i=0; i