[OpenJDK 2D-Dev] [PATCH] 4494651: Wrong width and height in BufferedImage GraphicsConfiguration objects

Jim Graham Jim.A.Graham at Sun.COM
Wed Feb 18 02:39:44 UTC 2009


In fact, I've just updated the synopsis and evaluated the bug along 
these lines... ;-)

			...jim

Jim Graham wrote:
> Note that, per my previous email - this could easily be just closed as 
> "not a bug", though it might be nice to change it so the bounds were 
> completely unrelated to any specific image rather than randomly set to 
> the first image that was queried.
> 
> In other words, I'd rewrite the bug synopsis as something like:
> 
>   GC reports random bounds (that happen to match first img)
> 
> and then hardcode some interesting bounds instead (perhaps the maximum 
> supported image bounds - which we've never implemented or documented, 
> but perhaps it would be a good way to introduce this concept for the 
> future?)...
> 
>             ...jim
> 
> Dmitri Trembovetski wrote:
>>
>>   Note that this fix may have some performance
>>   implications for cases when there are caches based on the
>>   graphics configuration of the Graphics object used for
>>   rendering - these caches may grow uncontrollably.
>>
>>   I don't know of any other solution for this bug, but I'm
>>   not sure fixing it would do more harm than good.
>>   The bug has only 3 votes after 8 years (all of them
>>   in 2001-2002)..
>>
>>   Thanks,
>>     Dmitri
>>
>>
>> Torsten Landschoff wrote:
>>> Hello List,
>>>
>>> A few days before I ran into bug 4494651, after more than 7 years of 
>>> its existence. See
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4494651
>>>
>>> I was curious how hard it would be to build a fixed OpenJDK, so I 
>>> spent half of the saturday to get OpenJDK build and its unit tests 
>>> running.
>>>
>>> Turned out that it wasn't that hard so here are my changes for you to 
>>> consider.
>>>
>>> The first diff contains a trivial unit test derived from the example 
>>> code in the bug log. The code should speak for itself.
>>>
>>> Tracing the bug to its origin, I found the interesting lookup table 
>>> in BufferedImageGraphicsConfig.java which maps each imageType 
>>> supported by BufferedImage to a BufferedImageGraphicsConfig. I have 
>>> no idea why that would be a good idea (apart from performance), so 
>>> the second diff just removes that feature and creates a new graphics 
>>> configuration each time it is requested.
>>>
>>> As the only reason why one would create such a lookup table would be 
>>> to get around performance problems, I wrote a third patch which 
>>> caches the graphics configurations already retrieved in a weak hash map.
>>>
>>> Comments welcome. Feel free to apply my code to the OpenJDK code 
>>> base, I'd be glad to sign the Sun Contributor Agreement if needed for 
>>> such a trivial contribution.
>>>
>>>
>>> Thanks for all your work, I really enjoy working with Java (and even 
>>> more with its virtual machine and great libraries).
>>>
>>> Greetings, Torsten
>>>



More information about the 2d-dev mailing list