Support for GTK 2 & 3 now in JFX
Erik De Rijcke
derijcke.erik at gmail.com
Wed May 18 20:16:57 UTC 2016
Hi,
I tried using the gtk3 broadway backend. This results in a segfault.
Current thread (0x00007fe8cc0c2000): JavaThread "GtkNativeMainLoopThread"
[_thread_in_native, id=21171, stack(0x00007fe8abcad000,0x00007fe8abdae000)]
Stack: [0x00007fe8abcad000,0x00007fe8abdae000], sp=0x00007fe8abdac1c0,
free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code)
C [libX11.so.6+0x2d32a] XInternAtom+0x2a
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j
com.sun.glass.ui.gtk.GtkApplication.staticScreen_getScreens()[Lcom/sun/glass/ui/Screen;+0
j com.sun.glass.ui.Screen.initScreens()V+6
j com.sun.glass.ui.Application.lambda$run$1(Ljava/lang/Runnable;)V+0
j com.sun.glass.ui.Application$$Lambda$44.run()V+4
v ~StubRoutines::call_stub
j com.sun.glass.ui.gtk.GtkApplication._runLoop(Ljava/lang/Runnable;Z)V+0
j
com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$8(Ljava/lang/Runnable;Z)V+7
j com.sun.glass.ui.gtk.GtkApplication$$Lambda$48.run()V+12
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
It looks like there are still some hard dependencies on X which will
obviously not work using a non X gtk back-end. (I verified the broadway
backend works by running the gtk3-demo app in my browser first).
On Wed, May 18, 2016 at 3:06 AM, Jim Graham <james.graham at oracle.com> wrote:
> Hi Erik,
>
> I tried testing our build under a Gentoo LiveCD. Even the minimal
> environment of the LiveCD has the org.gnome.desktop.interface schema
> defined so I'm not sure how minimal your environment was. I did discover
> that, although the schema was there, it had a value of "0" for the
> scaling-factor which caused us to create bogus logical screen sizes that
> probably caused the exception you saw, so simply finding that schema and
> key is not enough for us to trust the value. I'll add some protection for
> bad data from the key, but I'm curious to find out how minimal your install
> was and whether we should simply state our dependency, or if your
> configuration is likely to be common enough that we should protect against
> it in our code...?
>
> Also, what does:
>
> % gsettings get org.gnome.desktop.interface scaling-factor
>
> return for your system? If you set it to "1", does FX come up fine?
>
> ...jim
>
>
> On 05/16/2016 01:01 PM, Jim Graham wrote:
>
>> These may both be related to the HiDPI fix instead. I added a usage of
>> g_settings in that fix that went in on Friday. It looks like I'll have
>> to check for the schema existing before I access it.
>>
>> Can you file a bug report?
>>
>> (On a side note, the call that grabs the schema does not have a "schema
>> not known" return value - if you ask for a schema that doesn't exist
>> they abort your application. Seems kind of drastic, but the bug reports
>> that request that they simply return null were met with push back
>> because the developers couldn't imagine why anyone would want such a
>> thing (huh?) and later an attempt to return NULL on unrecognized schemas
>> and keys had to be backed out because of the huge disaster the NULL
>> values caused (and somehow ABORT'ing on behalf of the application is
>> better in that case?). Unfortunately I don't see much sanity in those
>> APIs or any support for a case like this of "I'd like to get that value,
>> but if you haven't heard of it, that's fine as I have a backup plan".
>> The only way around this will be to enumerate all schemas and all keys
>> and see if the ones we want are found in the list - a rather extreme
>> workaround for bad error handling behavior in their APIs...)
>>
>> ...jim
>>
>> On 05/16/2016 05:15 AM, Erik De Rijcke wrote:
>>
>>> I ran into several issues, however I'm not sure they are related to gtk3
>>>
>>> first of all it seems there is a dependency on:
>>> gsettings-desktop-schemas.
>>> I'm not sure how desirable this is (I did not have it installed,
>>> installing
>>> it fixed the error but I can image people not wanting to install it?)
>>>
>>> Second, and this seems unrelated to gtk(3?), the screen initialization
>>> fails (test was done using gentoo linux on virtualbox with windows 7 as
>>> host):
>>>
>>> Exception in thread "JavaFX Application Thread"
>>> java.lang.IllegalArgumentException: Both width and height must be >= 0
>>>
>>> at javafx.geometry.Rectangle2D.<init>(Rectangle2D.java:104)
>>> at javafx.stage.Screen.nativeToScreen(Screen.java:152)
>>> at javafx.stage.Screen.updateConfiguration(Screen.java:88)
>>> at javafx.stage.Screen.checkDirty(Screen.java:82)
>>> at javafx.stage.Screen.getPrimary(Screen.java:185)
>>> at
>>>
>>> com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph(QuantumToolkit.java:298)
>>>
>>> at
>>>
>>> com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:340)
>>>
>>> at
>>>
>>> com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:257)
>>>
>>> at com.sun.glass.ui.Application.lambda$run$1(Application.java:155)
>>> at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
>>> at
>>>
>>> com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$7(GtkApplication.java:194)
>>>
>>> at java.lang.Thread.run(Thread.java:804)
>>>
>>>
>>> Nearly all values seem to be -2147483648
>>>
>>>
>>> I used openjdk9 109 as per instructions of the wiki, and the latest
>>> javafx
>>> dev.
>>>
>>>
>>> On Mon, May 9, 2016 at 8:56 PM, Jim Graham <james.graham at oracle.com>
>>> wrote:
>>>
>>> Should we integrate that into prism.verbose output?
>>>>
>>>> ...jim
>>>>
>>>>
>>>> On 5/9/16 6:18 AM, David Hill wrote:
>>>>
>>>>
>>>>> I added a new feature Friday and would like some help testing it.
>>>>>
>>>>> This new feature (8087516: Conditional support for GTK 3 on Linux)
>>>>> allows
>>>>> us to use either GTK v2 or 3 with JavaFX.
>>>>>
>>>>> The default has not changed - we will use gtk 2 by preference.
>>>>>
>>>>> The help I need is for anyone doing testing on Linux with the current
>>>>> tree - like todays sanity testing. Adding
>>>>>
>>>>> -Djdk.gtk.verbose=true
>>>>>
>>>>> should output the version detected and used. I would appreciate a paste
>>>>> of that along with the OS version.
>>>>>
>>>>> -Djdk.gtk.version=3
>>>>>
>>>>> toggles the preferred version to GTK 3. Testing using that toggled
>>>>> would
>>>>> also be appreciated, along with a note to me
>>>>> with the OS version.
>>>>>
>>>>> thanks!
>>>>>
>>>>>
>>>>>
More information about the openjfx-dev
mailing list