diff options
7 files changed, 68 insertions, 41 deletions
diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh index 92b3670bf..82e24bb7a 100644 --- a/make/scripts/tests.sh +++ b/make/scripts/tests.sh @@ -117,6 +117,9 @@ function jrun() { #D_ARGS="-Djogl.debug=all" #D_ARGS="-Djogl.debug=all -Dnewt.debug=all -Djogl.debug.DebugGL" #D_ARGS="-Dnewt.debug=all" + D_ARGS="-Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all -Dnewt.disable.LinuxKeyEventTracker -Dnewt.disable.LinuxMouseTracker" + #D_ARGS="-Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all -Dnewt.disable.LinuxKeyEventTracker" + #D_ARGS="-Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all -Dnewt.disable.LinuxMouseTracker" #D_ARGS="-Djogl.debug=all -Dnewt.debug=all" #D_ARGS="-Djogl.debug=all -Dnativewindow.debug=all" #D_ARGS="-Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all" diff --git a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java index d4af1b972..5e1e61407 100644 --- a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java +++ b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java @@ -108,7 +108,11 @@ public class DisplayDriver extends DisplayImpl { } if( null != defaultPointerIcon ) { final LinuxMouseTracker lmt = LinuxMouseTracker.getSingleton(); - setPointerIconActive(defaultPointerIcon.getHandle(), lmt.getLastX(), lmt.getLastY()); + if( null != lmt ) { + setPointerIconActive(defaultPointerIcon.getHandle(), lmt.getLastX(), lmt.getLastY()); + } else { + setPointerIconActive(defaultPointerIcon.getHandle(), 0, 0); + } } } private PointerIconImpl defaultPointerIcon = null; diff --git a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java index 31b1d7087..e12b033cc 100644 --- a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java +++ b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java @@ -210,9 +210,12 @@ public class WindowDriver extends WindowImpl { } windowHandleClose = nativeWindowHandle; - addWindowListener(keyTracker); - addWindowListener(mouseTracker); - + if( null != keyTracker ) { + addWindowListener(keyTracker); + } + if( null != mouseTracker ) { + addWindowListener(mouseTracker); + } focusChanged(false, true); } @@ -222,9 +225,12 @@ public class WindowDriver extends WindowImpl { final DisplayDriver display = (DisplayDriver) getScreen().getDisplay(); final EGLGraphicsDevice eglDevice = (EGLGraphicsDevice) getGraphicsConfiguration().getScreen().getDevice(); - removeWindowListener(mouseTracker); - removeWindowListener(keyTracker); - + if( null != mouseTracker ) { + removeWindowListener(mouseTracker); + } + if( null != keyTracker ) { + removeWindowListener(keyTracker); + } if(0!=windowHandleClose) { CloseWindow0(display.getBCMHandle(), windowHandleClose); } @@ -285,13 +291,21 @@ public class WindowDriver extends WindowImpl { @Override protected void setPointerIconImpl(final PointerIconImpl pi) { final DisplayDriver display = (DisplayDriver) getScreen().getDisplay(); - display.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, mouseTracker.getLastX(), mouseTracker.getLastY()); + if( null != mouseTracker ) { + display.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, mouseTracker.getLastX(), mouseTracker.getLastY()); + } else { + display.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, 0, 0); + } } @Override protected boolean setPointerVisibleImpl(final boolean pointerVisible) { final DisplayDriver display = (DisplayDriver) getScreen().getDisplay(); - display.setActivePointerIconVisible(pointerVisible, mouseTracker.getLastX(), mouseTracker.getLastY()); + if( null != mouseTracker ) { + display.setActivePointerIconVisible(pointerVisible, mouseTracker.getLastX(), mouseTracker.getLastY()); + } else { + display.setActivePointerIconVisible(pointerVisible, 0, 0); + } return true; } diff --git a/src/newt/classes/jogamp/newt/driver/egl/gbm/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/egl/gbm/ScreenDriver.java index 77ec3ce1a..82f13f6d6 100644 --- a/src/newt/classes/jogamp/newt/driver/egl/gbm/ScreenDriver.java +++ b/src/newt/classes/jogamp/newt/driver/egl/gbm/ScreenDriver.java @@ -120,7 +120,11 @@ public class ScreenDriver extends ScreenImpl { crtc_ids = new int[] { encoder[scridx].getCrtc_id() }; if( null != defaultPointerIcon ) { final LinuxMouseTracker lmt = LinuxMouseTracker.getSingleton(); - setPointerIconActive(defaultPointerIcon.getHandle(), lmt.getLastX(), lmt.getLastY()); + if( null != lmt ) { + setPointerIconActive(defaultPointerIcon.getHandle(), lmt.getLastX(), lmt.getLastY()); + } else { + setPointerIconActive(defaultPointerIcon.getHandle(), 0, 0); + } } } diff --git a/src/newt/classes/jogamp/newt/driver/egl/gbm/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/egl/gbm/WindowDriver.java index de09ba6e3..b5985c66c 100644 --- a/src/newt/classes/jogamp/newt/driver/egl/gbm/WindowDriver.java +++ b/src/newt/classes/jogamp/newt/driver/egl/gbm/WindowDriver.java @@ -347,13 +347,21 @@ public class WindowDriver extends WindowImpl { @Override protected void setPointerIconImpl(final PointerIconImpl pi) { final ScreenDriver screen = (ScreenDriver) getScreen(); - screen.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, mouseTracker.getLastX(), mouseTracker.getLastY()); + if( null != mouseTracker ) { + screen.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, mouseTracker.getLastX(), mouseTracker.getLastY()); + } else { + screen.setPointerIconActive(null != pi ? pi.validatedHandle() : 0, 0, 0); + } } @Override protected boolean setPointerVisibleImpl(final boolean pointerVisible) { final ScreenDriver screen = (ScreenDriver) getScreen(); - screen.setActivePointerIconVisible(pointerVisible, mouseTracker.getLastX(), mouseTracker.getLastY()); + if( null != mouseTracker ) { + screen.setActivePointerIconVisible(pointerVisible, mouseTracker.getLastX(), mouseTracker.getLastY()); + } else { + screen.setActivePointerIconVisible(pointerVisible, 0, 0); + } return true; } diff --git a/src/newt/classes/jogamp/newt/driver/linux/LinuxKeyEventTracker.java b/src/newt/classes/jogamp/newt/driver/linux/LinuxKeyEventTracker.java index b6503c1ed..8265ec7f8 100644 --- a/src/newt/classes/jogamp/newt/driver/linux/LinuxKeyEventTracker.java +++ b/src/newt/classes/jogamp/newt/driver/linux/LinuxKeyEventTracker.java @@ -82,30 +82,24 @@ import com.jogamp.newt.event.KeyEvent; */ public class LinuxKeyEventTracker implements WindowListener, KeyTracker { - private static final boolean DISABLE; - private static final boolean ENABLE_PLAIN_EVENTX; + private static final boolean DISABLE = PropertyAccess.isPropertyDefined("newt.disable.LinuxKeyEventTracker", true); + private static final boolean ENABLE_PLAIN_EVENTX = PropertyAccess.isPropertyDefined("newt.enable.LinuxKeyEventTracker.eventx", true); private static final String linuxDevInputByEventXRoot = "/dev/input/"; private static final String linuxDevInputByIDRoot = "/dev/input/by-id/"; private static final String linuxDevInputByPathRoot = "/dev/input/by-path/"; - private static final LinuxKeyEventTracker ledt; - - static { - DISABLE = PropertyAccess.isPropertyDefined("newt.disable.LinuxKeyEventTracker", true); - ENABLE_PLAIN_EVENTX = PropertyAccess.isPropertyDefined("newt.enable.LinuxKeyEventTracker.eventx", true); + private static LinuxKeyEventTracker ledt = null; + public static synchronized LinuxKeyEventTracker getSingleton() { if( !DISABLE ) { - ledt = new LinuxKeyEventTracker(); - final Thread t = new InterruptSource.Thread(null, ledt.eventDeviceManager, "NEWT-LinuxEventDeviceManager"); - t.setDaemon(true); - t.start(); - } else { - ledt = null; + if( null == ledt ) { + ledt = new LinuxKeyEventTracker(); + final Thread t = new InterruptSource.Thread(null, ledt.eventDeviceManager, "NEWT-LinuxEventDeviceManager"); + t.setDaemon(true); + t.start(); + } } - } - - public static LinuxKeyEventTracker getSingleton() { return ledt; } @@ -124,6 +118,8 @@ public class LinuxKeyEventTracker implements WindowListener, KeyTracker { */ private final Map<String, EventDevicePoller> edpMap = new HashMap<String, EventDevicePoller>(); + private LinuxKeyEventTracker() {} + @Override public void windowResized(final WindowEvent e) { } diff --git a/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java b/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java index c49defe11..4f9bce88e 100644 --- a/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java +++ b/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java @@ -57,22 +57,18 @@ import com.jogamp.newt.event.WindowUpdateEvent; */ public class LinuxMouseTracker implements WindowListener, MouseTracker { - private static final boolean DISABLE; - private static final LinuxMouseTracker lmt; + private static final boolean DISABLE = PropertyAccess.isPropertyDefined("newt.disable.LinuxMouseTracker", true); + private static LinuxMouseTracker lmt = null; - static { - DISABLE = PropertyAccess.isPropertyDefined("newt.disable.LinuxMouseTracker", true); + public static synchronized LinuxMouseTracker getSingleton() { if(!DISABLE) { - lmt = new LinuxMouseTracker(); - final Thread t = new InterruptSource.Thread(null, lmt.mouseDevicePoller, "NEWT-MouseTracker"); - t.setDaemon(true); - t.start(); - } else { - lmt = null; + if( null == lmt ) { + lmt = new LinuxMouseTracker(); + final Thread t = new InterruptSource.Thread(null, lmt.mouseDevicePoller, "NEWT-MouseTracker"); + t.setDaemon(true); + t.start(); + } } - } - - public static LinuxMouseTracker getSingleton() { return lmt; } @@ -88,6 +84,8 @@ public class LinuxMouseTracker implements WindowListener, MouseTracker { private WindowImpl focusedWindow = null; private final MouseDevicePoller mouseDevicePoller = new MouseDevicePoller(); + private LinuxMouseTracker() {} + public final int getLastX() { return lastFocusedX; } public final int getLastY() { return lastFocusedY; } |