<AWT Dev> Review request: 6913179 (The java.awt.FileDialog should use native GTK file chooser on linux distros)

Anthony Petrov Anthony.Petrov at Sun.COM
Fri Mar 12 08:50:55 PST 2010


Thank you very much, Damjan!

I published your latest patch at:

http://cr.openjdk.java.net/~anthony/7-43-GTKFileDialog-6913179.4/

However, it still contains incorrectly formatted lines which makes the 
code unreadable. You might want to explore the Sdiffs in the webrev to 
notice that (eg., UNIXToolkit.java, awt_UNIXToolkit.c, 
sun_awt_X11_GtkFileDialogPeer.c, etc.). Would you or Costantino please 
correct that?

The fix looks fine in overall. Peter might provide some comments after 
reviewing that as well.


PS. The nimbusL&F issue does not seem reproducible locally. Perhaps 
you're using an outdated repository, or your building environment has 
slightly changed.

--
best regards,
Anthony


On 03/11/2010 01:09 PM, Damjan Jovanovic wrote:
> On Wed, Mar 10, 2010 at 11:35 PM, Costantino Cerbo <c.cerbo at gmail.com> wrote:
>> Hallo,
> 
> Hi
> 
>> the only change in this new patch is the include of <string.h> and and
>> <jni_util.h>.
>>
>> The answers for Damjan:
>> 1) Using gdk_threads_enter() and gdk_threads_leave() in
>> Java_sun_awt_X11_GtkFileDialogPeer_quit(..) freezes the dialog on
>> close.
> 
> Sun, your latest awt tree still doesn't compile for me, I had to hack
> it to not call a method that doesn't exist so it does compile:
> 
> diff -r d6d2de6ee2d1
> src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java
> --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java
>  Fri Feb 19 15:13:37 2010 -0800
> +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java
>  Thu Mar 11 11:33:29 2010 +0200
> @@ -288,7 +288,7 @@
>              "JComponent.sizeVariant" == eName) {
> 
>              JComponent c = (JComponent) ev.getSource();
> -            defaults.clearOverridesCache(c);
> +            //defaults.clearOverridesCache(c);
>              return true;
>          }
> 
> Now onto your patch.
> 
> You probably didn't listen to my warning about not calling
> gdk_threads_enter when Java_sun_awt_X11_GtkFileDialogPeer_quit is
> called from handle_response (because GTK itself holds that GDK lock
> during the entire handle_response invocation, and that lock is not
> reentrant). Hence you got the freeze.
> 
> My tests show the way I described does work, and the patch that uses
> it correctly and doesn't freeze is attached.
> 
>> 2) This patch is tested with the last code in the OpenJDK repository
>> and compiles correctly.
>>
>> I think, we all have done a good job and now it's time to put the
>> patch in the OpenJDK.
> 
> With my patch and some heavier testing, I managed to get an assertion failure:
> 
> java: ../../src/xcb_io.c:176: process_responses: Assertion `!(req &&
> current_request && !(((long) (req->sequence) - (long)
> (current_request)) <= 0))' failed.
> Aborted
> 
> I couldn't reproduce it but I'll keep trying.
> 
> There's probably still some place where we're not locking properly.
> 
>> Best Regards,
>> Costantino
> 
> Regards
> Damjan
> 
>> 2010/3/10 Costantino Cerbo <c.cerbo at gmail.com>:
>>> Hello Damjan,
>>>
>>> 2010/3/10 Damjan Jovanovic <damjan.jov at gmail.com>:
>>>> You should probably include the real header files here, like string.h
>>>> and jni_util.h, instead of declaring those functions yourself.
>>> You're right. I will do so.
>>>
>>>
>>>> Should we put the GDK lock statements around those 3 functions? But if
>>>> we should, make sure they aren't taken recursively: when called from
>>>> Java the GDK lock isn't taken and we must, but when called from the
>>>> handle_response callback function, GTK already holds that lock and we
>>>> must not.
>>> I don't know. I'll try later and let you know.
>>>
>>>
>>>> You've still got some C++ comments:
>>>> $ grep '//' b6913179.patch
>>> They are comments in Java classes ;-)
>>>
>>>
>>>> Also the patch doesn't even compile from me, fpulling the awt forest
>>>> to the latest and trying again...
>>> Yesterday I could compile without problems.
>>> When I go home later, I check out the last code in the repository and try again.
>>>
>>>
>>> Thanks for your comments and best regards,
>>> Costantino
>>>



More information about the awt-dev mailing list