[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz gzz/media/impl/SimpleImageScroll.java gzz/u...,
Tuomas J. Lukka <=