[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[udig-devel] Re: Tile and LayerGeneratedGlyphDecorator locking up
|
I don't remember writing this code but I think maybe Graham and I worked
on it together.
Looking a little further this may be a locking issue. Inside the
disposeSWTImage() function is the following code:
synchronized (SWTLock) {
if (swtImage != null) {
swtImage.dispose();
swtImage = null;
}
}
So I suspect that it's getting hung up waiting for SWTLock, but I have
no idea why. The only other place when this lock is used is in the
createSWTImage function...
synchronized (SWTLock) {
// if the SWTImage is created once the lock is gained, exit
if (swtImage != null && !swtImage.isDisposed()) {
return;
}
// otherwise try creating the SWTImage now
try {
BufferedImage buffImage = getBufferedImage();
swtImage = AWTSWTImageUtils.createSWTImage(buffImage, false);
} catch (Exception ex) {
ex.printStackTrace();
}
}
I don't have a linux version to investigate this further.
Emily
Jody Garnett wrote:
So here are some more data points...
Great detective work.
try {
- boolean notifyIcon = refreshIcon(layer);
+ boolean notifyIcon = true;
boolean notifyLabel = refreshLabel(layer);
And voila, no more lock ups! Well, until it happened again so traced
back again and did the following...
#P net.refractions.udig.project
Index: src/net/refractions/udig/project/render/Tile.java
===================================================================
--- src/net/refractions/udig/project/render/Tile.java (revision 31218)
+++ src/net/refractions/udig/project/render/Tile.java (working copy)
@@ -147,7 +147,7 @@
// System.out.println((msg.getNewIntValue() ==
IRenderer.DONE) + "; state = done");
if( swtImage == null || msg.getNewIntValue()==IRenderer.DONE){
//we only care about done events
- disposeSWTImage();
+// disposeSWTImage();
}
}
}
Which has "cured" the lock up problem so far. Obviously this really
isn't a proper fix, but it is allowing me to make progress on my
prototype.
This last one looks suspicions to me; I would only try displosing the
image if it was != null for example :-)
Emily - this is your Tile code am I reading it correct?
It appears as if we are leaking SWT images; and the linux
implementation is calling our bluff and making us wait
Jody