X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FScheduler.java;h=9ee8da2d8bd98d64080b88dc87fa6502eb70f0d6;hb=ae27e30db87f36f6ebae16a502d2c23639b62d52;hp=55be6dfc3642658bb7ca98a7a7d209fe3b84ba05;hpb=97daadb9ac5a453889da76c8c4c72f8f6badcba2;p=org.ibex.core.git diff --git a/src/org/xwt/Scheduler.java b/src/org/xwt/Scheduler.java index 55be6df..9ee8da2 100644 --- a/src/org/xwt/Scheduler.java +++ b/src/org/xwt/Scheduler.java @@ -23,8 +23,31 @@ public class Scheduler { public static void init() { if (singleton == null) (singleton = Platform.getScheduler()).run(); } - private static Task current = null; - public static Task current() { return current; } + private static Task currentTask = null; + public static Task current() { return currentTask; } + + /** synchronizd so that we can safely call it from an event-delivery thread, in-context */ + private static volatile boolean rendering = false; + private static volatile boolean again = false; + public static void renderAll() { + if (rendering) { again = true; return; } + synchronized(Scheduler.class) { + try { + rendering = true; + do { + again = false; + for(int i=0; i