[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: linux separate screen configuration issue
From: sebastien deries <sebastien.deries () gmail ! com>
Date: 2018-05-23 6:44:44
Message-ID: CAEdf35kMsZhsq4XbJZFnS80pii1ODgKskY_wT11jYOO=AM=jBg () mail ! gmail ! com
[Download RAW message or body]
Greetings,
Am I really the only one getting this issue ?
https://stackoverflow.com/questions/50168857/javafx-misreports-number-of-screen-devices
Thanks.
Sebastien
On Fri, Apr 27, 2018 at 3:33 PM, sebastien deries <
sebastien.deries@gmail.com> wrote:
> Greetings,
>
> I develop an application on linux on a Red Hat 6.8 x64 using java 8u162
> and an NVidia GPU (and its latest driver), with 2 full HD Screens.
>
> I got an issue retrieving the number of physical screens:
>
> - when the X server is in extended desktop mode (2 physical screens,
> but a single logical one from 0 to 3840 pixels), Screen.getScreens()
> returns 2 Screen (which is normal)
> - When the X server is in separate desktop mode (2 physical screens
> and 2 logical screens from 0 to 1920 pixels), Screen.getScreens() returns 1
> Screen ==> is this normal or a bug?
>
> I compared the JavaFX API to the AWT API:
>
> GraphicsEnvironment env = GraphicsEnvironment.
> getLocalGraphicsEnvironment();
> GraphicsDevice[] gdev = env.getScreenDevices();
>
> AWT returns 2 screen devices in both configuration mode.
>
>
> I Also checked on java 9 and java 10 using a ubuntu x64 machine and got
> the same issue with JavaFX.
>
> I tried debugging this and it seems that the issue is in libglass.so in
> native code.
>
> What do you think about this ?
>
> Thank you for your help.
>
> Regards
>
> Sebastien
>
>
> Here is the code that reproduces the issue:
>
> public class ScreenTest extends Application {
>
> private static final int SIZE = 1600;
> private final AnchorPane root = new AnchorPane();
>
> @Override
> public void start(Stage primaryStage) throws Exception {
>
> root.backgroundProperty().set(new Background(new
> BackgroundFill(Color.BEIGE, null, null)));
> Scene scene = new Scene(root, SIZE, SIZE);
> primaryStage.show();
>
> Screen.getScreens().forEach(screen -> System.out.println("JAVAFX
> :" + screen));
> GraphicsEnvironment env = GraphicsEnvironment.
> getLocalGraphicsEnvironment();
> GraphicsDevice[] gdev = env.getScreenDevices();
>
> for (GraphicsDevice d : gdev) {
> System.out.println("AWT:" + d);
> }
> }
> public static void main(String... strings) {
> launch(strings);
> }
> }
>
>
>
> here is the X11 Xorg.conf:
>
> Section "ServerLayout"
> Identifier "Layout0"
> Screen 0 "Screen0" 0 0
> Screen 1 "Screen1" RightOf "Screen0"
> InputDevice "Keyboard0" "CoreKeyboard"
> InputDevice "Mouse0" "CorePointer"
> Option "Xinerama" "0"
> EndSection
>
> Section "Files"
> EndSection
>
> Section "InputDevice"
>
> # generated from default
> Identifier "Mouse0"
> Driver "mouse"
> Option "Protocol" "auto"
> Option "Device" "/dev/psaux"
> Option "Emulate3Buttons" "no"
> Option "ZAxisMapping" "4 5"
> EndSection
>
> Section "InputDevice"
>
> # generated from default
> Identifier "Keyboard0"
> Driver "kbd"
> EndSection
>
> Section "Monitor"
> Identifier "Monitor0"
> VendorName "Unknown"
> ModelName "CMN"
> HorizSync 53.0 - 66.0
> VertRefresh 48.0 - 60.0
> Option "DPMS"
> EndSection
>
> Section "Monitor"
> Identifier "Monitor1"
> VendorName "Unknown"
> ModelName "DELL C7017T"
> HorizSync 30.0 - 83.0
> VertRefresh 56.0 - 76.0
> EndSection
>
> Section "Device"
> Identifier "Device0"
> Driver "nvidia"
> VendorName "NVIDIA Corporation"
> BoardName "Quadro K3100M"
> BusID "PCI:1:0:0"
> Screen 0
> EndSection
>
> Section "Device"
> Identifier "Device1"
> Driver "nvidia"
> VendorName "NVIDIA Corporation"
> BoardName "Quadro K3100M"
> BusID "PCI:1:0:0"
> Screen 1
> EndSection
>
>
>
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic