home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 June / pcx11_9706.iso / shutils / internet / browser / p32e40b5.exe / nav40.z / java40.jar / sun / awt / ScreenUpdater.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-23  |  2.5 KB  |  117 lines

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