home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- public class ScreenUpdater extends Thread {
- private final int PRIORITY = 4;
- private ScreenUpdaterEntry first;
- public static final ScreenUpdater updater = newScreenUpdater();
-
- static ThreadGroup findSystemThreadGroup() {
- Thread var0 = Thread.currentThread();
-
- ThreadGroup var1;
- for(var1 = var0.getThreadGroup(); var1 != null && !var1.getName().equals("main"); var1 = var1.getParent()) {
- }
-
- return var1;
- }
-
- static ScreenUpdater newScreenUpdater() {
- SecurityManager.enablePrivilege("UniversalThreadAccess");
- SecurityManager.enablePrivilege("UniversalThreadGroupAccess");
- return new ScreenUpdater(findSystemThreadGroup(), "ScreenUpdater");
- }
-
- private ScreenUpdater(ThreadGroup var1, String var2) {
- super(var1, var2);
- ((Thread)this).start();
- }
-
- private ScreenUpdater() {
- ((Thread)this).start();
- }
-
- private synchronized ScreenUpdaterEntry nextEntry() throws InterruptedException {
- while(true) {
- if (this.first == null) {
- Object var5 = null;
- this.wait();
- } else {
- long var2 = this.first.when - System.currentTimeMillis();
- if (var2 <= 0L) {
- ScreenUpdaterEntry var4 = this.first;
- this.first = this.first.next;
- return var4;
- }
-
- Object var1 = null;
- this.wait(var2);
- }
- }
- }
-
- public void run() {
- SecurityManager.enablePrivilege("UniversalThreadAccess");
- ((Thread)this).setName("ScreenUpdater");
-
- try {
- while(true) {
- ((Thread)this).setPriority(4);
- ScreenUpdaterEntry var1 = this.nextEntry();
- ((Thread)this).setPriority(var1.client.updatePriority());
-
- try {
- var1.client.updateClient(var1.arg);
- } catch (Throwable var3) {
- var3.printStackTrace();
- }
-
- Object var5 = null;
- }
- } catch (InterruptedException var4) {
- }
- }
-
- public void notify(UpdateClient var1) {
- this.notify(var1, 100L, (Object)null);
- }
-
- public synchronized void notify(UpdateClient var1, long var2) {
- this.notify(var1, var2, (Object)null);
- }
-
- public synchronized void notify(UpdateClient var1, long var2, Object var4) {
- long var5 = System.currentTimeMillis() + var2;
- long var7 = this.first != null ? this.first.when : -1L;
- if (this.first != null) {
- if (this.first.client == var1) {
- var5 = Math.min(this.first.when, var5);
- this.first = this.first.next;
- } else {
- for(ScreenUpdaterEntry var9 = this.first; var9.next != null; var9 = var9.next) {
- if (var9.next.client == var1 && var9.next.arg == var4) {
- var5 = Math.min(var9.next.when, var5);
- var9.next = var9.next.next;
- break;
- }
- }
- }
- }
-
- if (this.first != null && this.first.when <= var5) {
- ScreenUpdaterEntry var10;
- for(var10 = this.first; var10.next != null && var10.next.when <= var5; var10 = var10.next) {
- }
-
- var10.next = new ScreenUpdaterEntry(var1, var5, var4, var10.next);
- } else {
- this.first = new ScreenUpdaterEntry(var1, var5, var4, this.first);
- }
-
- if (var7 != this.first.when) {
- super.notify();
- }
-
- }
- }
-