home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.util.Vector;
-
- class ImageFetcher extends Thread {
- static Thread[] fetchers = null;
- static final int HIGH_PRIORITY = 8;
- static final int LOW_PRIORITY = 3;
- private static Vector waitList;
-
- private static ThreadGroup getImageFetcherThreadGroup() {
- ThreadGroup g;
- for(g = Thread.currentThread().getThreadGroup(); g.getParent() != null && g.getParent().getParent() != null; g = g.getParent()) {
- }
-
- return g;
- }
-
- private ImageFetcher() {
- super(getImageFetcherThreadGroup(), "Image Fetcher");
- }
-
- public static void add(ImageFetchable src) {
- Vector var1 = waitList;
- synchronized(var1){}
-
- try {
- if (!waitList.contains(src)) {
- waitList.addElement(src);
- waitList.notify();
- }
- } catch (Throwable var3) {
- throw var3;
- }
-
- }
-
- public static boolean isFetcher(Thread t) {
- for(int i = 0; i < fetchers.length; ++i) {
- if (fetchers[i] == t) {
- return true;
- }
- }
-
- return false;
- }
-
- public static boolean amFetcher() {
- return isFetcher(Thread.currentThread());
- }
-
- private static ImageFetchable nextImage() {
- Vector var0 = waitList;
- synchronized(var0){}
-
- ImageFetchable var3;
- try {
- ImageFetchable src = null;
-
- while(src == null) {
- while(waitList.size() == 0) {
- try {
- waitList.wait();
- } catch (InterruptedException var6) {
- System.err.println("Image Fetcher interrupted!");
- }
- }
-
- src = (ImageFetchable)waitList.elementAt(0);
- waitList.removeElement(src);
- }
-
- var3 = src;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- public void run() {
- while(true) {
- SecurityManager.setScopePermission();
- Thread.currentThread().setPriority(8);
- SecurityManager.resetScopePermission();
- ImageFetchable src = nextImage();
-
- try {
- src.doFetch();
- ImageFetchable var4 = null;
- } catch (Exception e) {
- System.err.println("Uncaught error fetching image:");
- ((Throwable)e).printStackTrace();
- }
- }
- }
-
- static {
- SecurityManager.setScopePermission();
- String imageFetcherCountString = System.getProperty("awt.imagefetchers", "4");
- SecurityManager.resetScopePermission();
- int imageFetcherCount = Integer.parseInt(imageFetcherCountString);
- SecurityManager.setScopePermission();
- fetchers = new Thread[imageFetcherCount];
- SecurityManager.resetScopePermission();
-
- for(int i = 0; i < fetchers.length; ++i) {
- SecurityManager.setScopePermission();
- Thread t = fetchers[i] = new ImageFetcher();
- t.setName(t.getName() + " " + i);
- t.setDaemon(true);
- SecurityManager.resetScopePermission();
- t.start();
- }
-
- waitList = new Vector();
- }
- }
-