Hi,

I found more problems with MediaTracker (this time some lockups) and fixed them. I also removed some unnessecary stuff.


2005-04-13 Roman Kennke <[EMAIL PROTECTED]>

   * java/awt/MediaTracker.java
   (MediaEntry.imageUpdate): Removed check for SOMEBITS, this
   confused the media tracker and lead to lockups. The LOADING
   bit is handled on other places.
   (addImage): Removed the 'start image tracking' stuff. This
   is not necessary and could confuse the media tracker.
   (checkAll): Improved the check for image status so that
   images that already complete images are detected. Also now
   are really all images checked and if necessary loaded. Before
   the method bailed out after the first incomplete image.
   (statusAll): Detect images that are complete after the
   call to Component.prepareImage(..).
   (checkID): The same as in checkAll.
   (statusID): The same as in statusAll.


/Roman

Index: java/awt/MediaTracker.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/awt/MediaTracker.java,v
retrieving revision 1.12
diff -u -r1.12 MediaTracker.java
--- java/awt/MediaTracker.java  12 Apr 2005 19:48:43 -0000      1.12
+++ java/awt/MediaTracker.java  13 Apr 2005 11:48:57 -0000
@@ -134,8 +134,6 @@
         status = ERRORED;
       else if ((flags & ALLBITS) != 0)
         status = COMPLETE;
-      else if ((flags & SOMEBITS) != 0)
-        status = LOADING;
       else
         status = 0;
 
@@ -176,9 +174,6 @@
         e.next = head;
         head = e;
       }
-    // Start tracking image status.
-    int flags = target.checkImage(image, e);
-    e.imageUpdate(image, flags, -1, -1, -1, -1);
   }
 
   /**
@@ -203,9 +198,6 @@
         e.next = head;
         head = e;
       }
-    // Start tracking image status.
-    int flags = target.checkImage(image, width, height, e);
-    e.imageUpdate(image, flags, -1, -1, width, height);
   }
 
   /**
@@ -245,21 +237,23 @@
     
     while (e != null)
       {
-       if ((e.status & (COMPLETE | ERRORED | ABORTED)) == 0)
-         {
-           if (load)
-             {
-               result = false;
-               if (e.status == 0)
-                 {
-                   target.prepareImage(e.image, e);
-                   e.status = LOADING;
-                 }
-             }
-           else
-             return false;
-         }
-       e = e.next;
+        if ((e.status & (COMPLETE | ERRORED | ABORTED)) == 0)
+          {
+            if (load && ((e.status & LOADING) == 0))
+              {
+                e.status = LOADING;
+                result = false;
+                boolean complete = target.prepareImage(e.image, e);
+                if (complete)
+                  {
+                    e.status = COMPLETE;
+                    result = true;
+                  }
+              }
+            else
+              result = false;
+          }
+        e = e.next;
       }
     return result;
   }
@@ -378,10 +372,13 @@
     while (e != null)
       {
         if (load && e.status == 0)
-         {
-           target.prepareImage(e.image, e);
-           e.status = LOADING;
-         }
+          {
+            boolean complete = target.prepareImage(e.image, e);
+            if (complete)
+              e.status = COMPLETE;
+            else
+              e.status = LOADING;
+          }
         result |= e.status;
        e = e.next;
       }
@@ -420,21 +417,23 @@
     
     while (e != null)
       {
-       if (e.id == id && ((e.status & (COMPLETE | ABORTED | ERRORED)) == 0))
-         {
-           if (load)
-             {
-               result = false;
-               if (e.status == 0)
-                 {
-                   target.prepareImage(e.image, e);
-                   e.status = LOADING;
-                 }
-             }
-           else
-             return false;
-         }
-       e = e.next;
+        if (e.id == id && ((e.status & (COMPLETE | ABORTED | ERRORED)) == 0))
+          {
+            if (load && ((e.status & LOADING) == 0))
+              {
+                e.status = LOADING;
+                result = false;
+                boolean complete = target.prepareImage(e.image, e);
+                if (complete)
+                  {
+                    e.status = COMPLETE;
+                    result = true;
+                  }
+              }
+            else
+              result = false;
+          }
+        e = e.next;
       }
     return result;
   }
@@ -567,10 +566,13 @@
         if (e.id == id)
          {
             if (load && e.status == 0)
-             {
-               target.prepareImage(e.image, e);
-               e.status = LOADING;
-             }
+              {
+                boolean complete = target.prepareImage(e.image, e);
+                if (complete)
+                  e.status = COMPLETE;
+                else
+                  e.status = LOADING;
+              }
             result |= e.status;
          }
        e = e.next;
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to