home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / ScreenUpdater.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.4 KB  |  132 lines

  1. package sun.awt;
  2.  
  3. import java.security.AccessController;
  4.  
  5. public class ScreenUpdater extends Thread {
  6.    private ScreenUpdaterEntry first;
  7.    public static final ScreenUpdater updater = initScreenUpdater();
  8.  
  9.    private static ScreenUpdater initScreenUpdater() {
  10.       return (ScreenUpdater)AccessController.doPrivileged(new 1());
  11.    }
  12.  
  13.    private static ThreadGroup getScreenUpdaterThreadGroup() {
  14.       ThreadGroup var0;
  15.       for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null && var0.getParent().getParent() != null; var0 = var0.getParent()) {
  16.       }
  17.  
  18.       return var0;
  19.    }
  20.  
  21.    private ScreenUpdater() {
  22.       super(getScreenUpdaterThreadGroup(), "Screen Updater");
  23.       ((Thread)this).start();
  24.    }
  25.  
  26.    private synchronized ScreenUpdaterEntry nextEntry() throws InterruptedException {
  27.       while(true) {
  28.          if (this.first == null) {
  29.             this.wait();
  30.          } else {
  31.             long var1 = this.first.when - System.currentTimeMillis();
  32.             if (var1 <= 0L) {
  33.                ScreenUpdaterEntry var3 = this.first;
  34.                this.first = this.first.next;
  35.                return var3;
  36.             }
  37.  
  38.             this.wait(var1);
  39.          }
  40.       }
  41.    }
  42.  
  43.    public void run() {
  44.       try {
  45.          while(true) {
  46.             ((Thread)this).setPriority(4);
  47.             ScreenUpdaterEntry var1 = this.nextEntry();
  48.             ((Thread)this).setPriority(6);
  49.  
  50.             try {
  51.                var1.client.updateClient(var1.arg);
  52.             } catch (Throwable var3) {
  53.                var3.printStackTrace();
  54.             }
  55.  
  56.             Object var5 = null;
  57.          }
  58.       } catch (InterruptedException var4) {
  59.       }
  60.    }
  61.  
  62.    public void notify(UpdateClient var1) {
  63.       this.notify(var1, 100L, (Object)null);
  64.    }
  65.  
  66.    public synchronized void notify(UpdateClient var1, long var2) {
  67.       this.notify(var1, var2, (Object)null);
  68.    }
  69.  
  70.    public synchronized void notify(UpdateClient var1, long var2, Object var4) {
  71.       long var5 = System.currentTimeMillis() + var2;
  72.       long var7 = this.first != null ? this.first.when : -1L;
  73.       if (this.first != null) {
  74.          if (this.first.client == var1 && this.first.arg == var4) {
  75.             if (var5 >= this.first.when) {
  76.                return;
  77.             }
  78.  
  79.             this.first = this.first.next;
  80.          } else {
  81.             for(ScreenUpdaterEntry var9 = this.first; var9.next != null; var9 = var9.next) {
  82.                if (var9.next.client == var1 && var9.next.arg == var4) {
  83.                   if (var5 >= var9.next.when) {
  84.                      return;
  85.                   }
  86.  
  87.                   var9.next = var9.next.next;
  88.                   break;
  89.                }
  90.             }
  91.          }
  92.       }
  93.  
  94.       if (this.first != null && this.first.when <= var5) {
  95.          ScreenUpdaterEntry var10;
  96.          for(var10 = this.first; var10.next != null && var10.next.when <= var5; var10 = var10.next) {
  97.          }
  98.  
  99.          var10.next = new ScreenUpdaterEntry(var1, var5, var4, var10.next);
  100.       } else {
  101.          this.first = new ScreenUpdaterEntry(var1, var5, var4, this.first);
  102.       }
  103.  
  104.       if (var7 != this.first.when) {
  105.          super.notify();
  106.       }
  107.  
  108.    }
  109.  
  110.    public synchronized void removeClient(UpdateClient var1) {
  111.       ScreenUpdaterEntry var2 = this.first;
  112.  
  113.       for(ScreenUpdaterEntry var3 = null; var2 != null; var2 = var2.next) {
  114.          if (var2.client.equals(var1)) {
  115.             if (var3 == null) {
  116.                this.first = var2.next;
  117.             } else {
  118.                var3.next = var2.next;
  119.             }
  120.          } else {
  121.             var3 = var2;
  122.          }
  123.       }
  124.  
  125.    }
  126.  
  127.    // $FF: synthetic method
  128.    ScreenUpdater(1 var1) {
  129.       this();
  130.    }
  131. }
  132.