gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz gzz/media/impl/SimpleImageScroll.java gzz/u...


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz gzz/media/impl/SimpleImageScroll.java gzz/u...
Date: Fri, 10 Jan 2003 14:53:17 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/01/10 14:53:17

Modified files:
        gzz/media/impl : SimpleImageScroll.java 
        gzz/util       : Background.java PriorityQueue.java 
Removed files:
        gzz/util       : GaborPatterns.java 
        test/gzz/util  : TryGabor.java 

Log message:
        Fix background thread to use priority queue

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/media/impl/SimpleImageScroll.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/util/Background.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/util/PriorityQueue.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: gzz/gzz/media/impl/SimpleImageScroll.java
diff -u gzz/gzz/media/impl/SimpleImageScroll.java:1.5 
gzz/gzz/media/impl/SimpleImageScroll.java:1.6
--- gzz/gzz/media/impl/SimpleImageScroll.java:1.5       Mon Nov  4 13:40:59 2002
+++ gzz/gzz/media/impl/SimpleImageScroll.java   Fri Jan 10 14:53:17 2003
@@ -37,7 +37,7 @@
 
 public class SimpleImageScroll
        implements ScrollBlockManager.MediaserverScrollBlock {
-String rcsid = "$Id: SimpleImageScroll.java,v 1.5 2002/11/04 18:40:59 tuukkah 
Exp $";
+String rcsid = "$Id: SimpleImageScroll.java,v 1.6 2003/01/10 19:53:17 tjl Exp 
$";
 
     final static String DIR="../mstmpimg/"; // XXX Platform dependent!
 
@@ -80,7 +80,7 @@
     }
 
     private void loadImage() {
-       Background.addTask(new Runnable() {
+       Background.getDefaultInstance().addTask(new Runnable() {
            public void run() {
                MediaserverBlock block ;
                String ct;
@@ -139,7 +139,7 @@
            if(x==0 && y==0 && w==width && h==height)
                return im;
 
-           Background.addTask(this);
+           Background.getDefaultInstance().addTask(this);
            return null;
        }
 
Index: gzz/gzz/util/Background.java
diff -u gzz/gzz/util/Background.java:1.1 gzz/gzz/util/Background.java:1.2
--- gzz/gzz/util/Background.java:1.1    Tue Jun 25 13:35:53 2002
+++ gzz/gzz/util/Background.java        Fri Jan 10 14:53:17 2003
@@ -38,44 +38,54 @@
 
 public class Background {
     public static boolean dbg = false;
-    final static void p(String s) { if(dbg) System.out.println(s); }
     final static void pa(String s) { System.out.println(s); }
 
-    static public void addTask(Runnable r) {
+    PriorityQueue queue = new PriorityQueue();
+
+    public void addTask(Runnable r, int priority) {
        synchronized(queue) {
-           queue.add(r);
+           queue.add(r, priority);
            queue.notifyAll();
        }
     }
 
-    static Vector queue = new Vector();
+    public void addTask(Runnable r) {
+       addTask(r, 0);
+    }
 
-    static Thread bgThread = new Thread() {
+    Thread bgThread = new Thread() {
        public void run() {
            try {
-           while(true) {
-               synchronized(queue) {
-                   if(queue.size() == 0)
-                       queue.wait();
-                   Runnable r = (Runnable)queue.get(0);
-                   queue.remove(0);
-                   p("Going to run "+r);
-                   r.run();
-                   p("Did run "+r);
+               while(true) {
+                   synchronized(queue) {
+                       Runnable r = (Runnable)queue.getAndRemoveLowest();
+                       if(r == null) {
+                           queue.wait();
+                           continue;
+                       }
+                       if(dbg) pa("BG: Going to run "+r);
+                       r.run();
+                       if(dbg) pa("BG: Did run "+r);
+                   }
                }
-           }
            } catch(InterruptedException e) {
+               pa("BG INTERRUPTED");
                throw new Error("Interrupted");
            }
        }
     };
 
-    static {
+    {
        bgThread.setDaemon(true);
        bgThread.start();
        bgThread.setPriority(Thread.MIN_PRIORITY);
     }
 
-
+    static Background defaultInstance = null;
+    public static Background getDefaultInstance() { 
+       if(defaultInstance == null)
+           defaultInstance = new Background();
+       return defaultInstance;
+    }
 
 }
Index: gzz/gzz/util/PriorityQueue.java
diff -u gzz/gzz/util/PriorityQueue.java:1.3 gzz/gzz/util/PriorityQueue.java:1.4
--- gzz/gzz/util/PriorityQueue.java:1.3 Fri Jan 10 14:23:34 2003
+++ gzz/gzz/util/PriorityQueue.java     Fri Jan 10 14:53:17 2003
@@ -8,6 +8,8 @@
  * N.B. the current implementation is not the most efficient 
  * possible one,
  * by far.
+ * <p>
+ * This class is not synchronized!
  */
 
 public class PriorityQueue {
@@ -44,7 +46,7 @@
      * If the job has already been added, set the priority
      * to the lower value (more important) of the two.
      */
-    public synchronized void add(Object job, int priority) {
+    public void add(Object job, int priority) {
        Integer prevprio = (Integer)jobPriority.get(job);
        if(prevprio != null) {
            if(priority >= prevprio.intValue()) return;
@@ -61,7 +63,7 @@
     /** Get the most important (with lowest numeric priority) job and remove
      * it from this queue.
      */
-    public synchronized Object getAndRemoveLowest() {
+    public Object getAndRemoveLowest() {
        if(jobs.isEmpty()) return null;
        Object j = jobs.first();
        jobs.remove(j);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]