[cp-patches] Re: RFC: deadlock with Componet/CairoGraphics.drawImage()

Sven de Marothy sven at physto.se
Sun Jun 11 03:05:55 UTC 2006


On Sat, 2006-06-10 at 23:17 +0200, Mark Wielaard wrote:
> Hi,
> 
> I was seeing deadlocks in some cases with ComponentGraphics.drawImage().
> ComponentGraphics takes the gdk lock and then calls super.drawImage().
> But in some cases when the image isn't a BufferedImage CairoGraphics
> would recurse into drawImage() again. And since the gdk lock isn't
> reentrant that would cause a deadlock. There was a second problem if the
> image was the error image, in that case it wouldn't have a ImageProducer
> and later on in CairoGraphics.drawImage() an Exception would be thrown.
> In that case the gdk lock would never be released. To prevent against
> such situations this patch also moves all operations that have to
> operate with the gdk lock held into a try-finally block to make sure the
> lock is always released.

Looks OK. But on a seperate but related note, could we move that "error
image" stuff to a seperate dummy class instead though? 

/Sven




More information about the Classpath-patches mailing list