home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- public class ScreenUpdater extends Thread {
- private ScreenUpdaterEntry first;
- public static final ScreenUpdater updater = new ScreenUpdater();
-
- private static ThreadGroup getScreenUpdaterThreadGroup() {
- ThreadGroup var0;
- for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null && var0.getParent().getParent() != null; var0 = var0.getParent()) {
- }
-
- return var0;
- }
-
- private ScreenUpdater() {
- super(getScreenUpdaterThreadGroup(), "Screen Updater");
- ((Thread)this).start();
- }
-
- private synchronized ScreenUpdaterEntry nextEntry() throws InterruptedException {
- while(true) {
- if (this.first == null) {
- this.wait();
- } else {
- long var1 = this.first.when - System.currentTimeMillis();
- if (var1 <= 0L) {
- ScreenUpdaterEntry var3 = this.first;
- this.first = this.first.next;
- return var3;
- }
-
- this.wait(var1);
- }
- }
- }
-
- public void run() {
- try {
- while(true) {
- ((Thread)this).setPriority(4);
- ScreenUpdaterEntry var1 = this.nextEntry();
- ((Thread)this).setPriority(6);
-
- 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 && this.first.arg == var4) {
- if (var5 >= this.first.when) {
- return;
- }
-
- 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) {
- if (var5 >= var9.next.when) {
- return;
- }
-
- 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();
- }
-
- }
-
- public synchronized void removeClient(UpdateClient var1) {
- ScreenUpdaterEntry var2 = this.first;
-
- for(ScreenUpdaterEntry var3 = null; var2 != null; var2 = var2.next) {
- if (var2.client.equals(var1)) {
- if (var3 == null) {
- this.first = var2.next;
- } else {
- var3.next = var2.next;
- }
- } else {
- var3 = var2;
- }
- }
-
- }
- }
-