home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / awt / ScreenUpdater.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.5 KB  |  121 lines

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