<AWT Dev> Bug 6913179, FileDialog uses native GTK under Linux: first patch
Costantino Cerbo
c.cerbo at gmail.com
Thu Feb 11 02:01:17 PST 2010
Hello Damian,
thanks for your interest and collaboration for my patch!
To solve this problem we have to use
#define GTHREAD_LIB "libgthread-2.0.so.0"
instead of
#define GTHREAD_LIB "libgthread-2.0.so"
I've seen that also to dynamically load libgtk-x11-2.0 the suffix ".0" is used.
I use Fedora and there both "libgthread-2.0.so.0" and
"libgthread-2.0.so" exist as symbolic link.
In your and other Linux distro is maybe only "libgthread-2.0.so.0" available.
Cheers,
Costantino
2010/2/11 Damjan Jovanovic <damjan.jov at gmail.com>:
> On my setup, with your patches, FileDialogTest.java fails to even start:
>
> $ java sun/awt/X11/FileDialogTest
> Exception in thread "main" java.lang.InternalError: Unable to load
> native GTK libraries
> at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.initialize(GTKLookAndFeel.java:1447)
> at javax.swing.UIManager.setLookAndFeel(UIManager.java:531)
> at javax.swing.UIManager.setLookAndFeel(UIManager.java:576)
> at sun.awt.X11.FileDialogTest.main(FileDialogTest.java:146)
>
> But then jconsole does the same.
>
> Turns out your patches introduce a regression that totally breaks the
> GTK LAF for me, since they look for the wrong gthread library name,
> causing GTK to fail to load:
>
> +#define GTHREAD_LIB "libgthread-2.0.so"
>
> $ ls /usr/lib/libgthread*
> /usr/lib/libgthread-2.0.so.0 /usr/lib/libgthread-2.0.so.0.2200.2
>
> Note the ".0" at the end.
>
> $ strace -f java sun/awt/X11/FileDialogTest
> ...
> [pid 449] open("/lib/tls/i686/cmov/libgthread-2.0.so", O_RDONLY) =
> -1 ENOENT (No such file or directory)
> [pid 449] open("/lib/tls/i686/libgthread-2.0.so", O_RDONLY) = -1
> ENOENT (No such file or directory)
> [pid 449] open("/lib/tls/libgthread-2.0.so", O_RDONLY) = -1 ENOENT
> (No such file or directory)
> [pid 449] open("/lib/i686/cmov/libgthread-2.0.so", O_RDONLY) = -1
> ENOENT (No such file or directory)
> [pid 449] open("/lib/i686/libgthread-2.0.so", O_RDONLY) = -1 ENOENT
> (No such file or directory)
> [pid 449] open("/lib/libgthread-2.0.so", O_RDONLY) = -1 ENOENT (No
> such file or directory)
> [pid 449] open("/usr/lib/tls/libgthread-2.0.so", O_RDONLY) = -1
> ENOENT (No such file or directory)
> [pid 449] open("/usr/lib/i686/cmov/libgthread-2.0.so", O_RDONLY) =
> -1 ENOENT (No such file or directory)
> [pid 449] open("/usr/lib/i686/libgthread-2.0.so", O_RDONLY) = -1
> ENOENT (No such file or directory)
> [pid 449] open("/usr/lib/libgthread-2.0.so", O_RDONLY) = -1 ENOENT
> (No such file or directory)
> [pid 449] open("/usr/lib/i486-linux-gnu/libgthread-2.0.so",
> O_RDONLY) = -1 ENOENT (No such file or directory)
> ...
>
> This is with the 32 bit Linux Mint 8, but Ubuntu 9.04 has the same problem:
>
> $ ls /usr/lib/libgthread*
> libgthread-2.0.so.0 libgthread-2.0.so.0.2000.1
>
> So I don't know where you're testing, that the GTK LAF hasn't regressed.
>
> Otherwise I will test more later.
>
> Thank you for the great work
> Damjan Jovanovic
>
>
> On Fri, Jan 29, 2010 at 1:28 AM, Costantino Cerbo <c.cerbo at gmail.com> wrote:
>> Hallo Peter, Hello Anthony,
>>
>> in the attached patch I take care of all the last Peter's comment.
>>
>> Unfortunately the problem with the EDT is still there.
>>
>> 2010/1/28 Anthony Petrov <Anthony.Petrov at sun.com>:
>>> What do you mean by "doesn't start"? Doesn't gtk_main() print out any
>>> diagnostic output to stderr? Or does it get invoked at all?
>> Unfortunately no diagnostic output is printed to stderr... try yourself...
>> I've also init the GLib thread system and call gdk_threads_enter() and
>> gdk_threads_leave() but the problem remains.
>>
>> I've no idea how to solve this problem... I've tried also with
>> SwingUtilities#invokeLater and SwingWorker...
>> I ask again for your help: It would be very nice if some of you can
>> address his mind to the solution of this remaining issue... otherwise
>> all the work done until now goes lost.
>>
>> Thanks a lot!
>> Costantino
>>
>
More information about the awt-dev
mailing list