aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt/classes/com
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1358: NewtCanvasSWT High-DPI: Propagate pixelScale to NEWT-Child and ↵Sven Gothel2020-01-041-3/+39
| | | | | | | | | utilize it for convertTo*Units(..) Detected pixelScale on SWT should be propagated to the NEWT Child using 'newtChild.setSurfaceScale(pixelScale)' to allow an impact. Also utilize computed pixel for converTo*Units(..) implementation.
* Bug 1358: NewtCanvasSWT High-DPI: Use window-units where required instead of ↵Sven Gothel2020-01-041-8/+8
| | | | | | | | pixel-units Commit ca7f0fb61b0a608b6e684a5bbde71f6ecb6e3fe0 did one thing wrong: Using the pixel-unit size for NEWT child window operations where window-units are required.
* Bug 1156: Seperate DRM/GBM NEWT native library from main head NEWT native ↵Sven Gothel2019-12-251-1/+1
| | | | | | | | | | | | | | | | library DRM/GBM is enabled for Linux in general. Nativewindow's 'nativewindow_drm' DRM/GBM native library is already seperated. NEWT get its 'newt_drm' DRM/GBM native library. NEWT's main head native library is renamed from 'newt' -> 'newt_head' and is earmarked for further seperation similar to Nativewindow's. At least a 'newt_wayland' will probably followup when support is added. Goal is to remove DRM/GBM dependency for Linux X11 operation as well as removing X11 dependency for Linux DRM/GBM operation.
* Bug 1156: NEWT Window: Better handling of fixed console case: Not resizable ↵Sven Gothel2019-12-091-3/+70
| | | | | | | | | | | | | | | | | | | | | | | and not repositionable. Our two fixed size and position console cases 'bcm.egl' and 'egl.gbm' (drm.gbm) only operate in a console like fullscreen mode. We should earmark and expose this behavior, as well as handle it by not waiting for a position / size and not attempting to change position and size. Reducing WindowImpl.minimumReconfigStateMask to bare minimum values: STATE_MASK_VISIBLE | STATE_MASK_FOCUSED; New WindowImpl.mutableSizePosReconfigStateMask extends WindowImpl.minimumReconfigStateMask, representing previous values: STATE_MASK_VISIBLE | STATE_MASK_FOCUSED | STATE_MASK_FULLSCREEN | STATE_MASK_RESIZABLE | STATE_MASK_REPOSITIONABLE; All WindowDriver implementations previously using WindowImpl.minimumReconfigStateMask are now using WindowImpl.mutableSizePosReconfigStateMask but the explicit console driver named above. I would have liked to add the STATE_BIT_FULLSCREEN to the current stateMask to notify this semantics, however this would have lead to more code changes as our fullscreen mode assumes to be 'on top' of the normal mode. Here the normal mode is essentially fullscreen and no back/forth fullscreen setting is useful or allowed. Therefore, both fixed size & position console driver won't expose themselves as being in fullscreen mode.
* NEWTDemoListener: Fix NPESven Gothel2019-12-051-4/+7
|
* NEWT: Align DisplayImpl.createPointerIcon(..) behavior; ↵Sven Gothel2019-12-041-8/+0
| | | | | | | | | | | | | | | | PointerIconImpl.validatedHandle() shall not create native resource. Semantic cleanup for clarity and equal behavior Align DisplayImpl.createPointerIcon(..) behavior - return null handle of createPointerIconImplChecked(..) shall be accepted, no exception for neither of the two creation methods. PointerIconImpl.validatedHandle() shall not create native resource. - throws exception if handle is null (about to be used) - no native creation shall happen here. Display.PointerIcon.validate(): Removed, not used.
* Bug 1406: demos.Launcher0: More code path reduction: useMultiplePointerIcon ↵Sven Gothel2019-12-041-6/+11
| | | | must be enabled via -pointerIcon
* Bug 1156: NEWT: NewtFactory.getCustomClass(..) RobustnessSven Gothel2019-11-221-5/+8
| | | | | getCustomClass(..) shall throw all required exceptions upstream. Previous essential NEWT driver exception information got suppressed if failing, only disclosed in debug mode.
* Bug 1363: Java 11: JAWTUtil: Use sun.awt.SunToolkit.awtLock/Unlock and ↵Sven Gothel2019-09-041-57/+2
| | | | | | | | | | | | | | | disableBackgroundErase (impl. semantics) Commit 13c6bbbde5ea476d60e0a2f04a5172d3302d0edd simply removed the AWT commonly used SunToolkit lock/unlock methods, which was incorrect. It lead to certain resources access collisions as access has to be synchronized using the same reentry lock across AWT and NativeWindow/JOGL. We utilize the new com.jogamp.common.util.UnsafeUtil of GlueGen commit 07c1885e9a3d1f3a3853414648c06fb3864bc69f to disable the IllegalAccessLogger while fetching the methods/fields and making them accessible. JAWUtil also hosts access to SunToolkit's disableBackgroundAccess(Component) aligning the code for GLCanvas, NewtCanvasAWT and AWTCanvas.
* Bug 1358: 'Honor' SWT's projection of High-DPI Scaling (Reading hidden pixel ↵Sven Gothel2019-04-101-37/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | dimensions) Christian reported this bug and described multiple pathways. This change usese the following: - access to getClientAreaInPixels w/ fallback of - DPIUtil.autoScaleUp(getClientArea()) I hardly have tested this on Linux/GTK, even though I use a High DPI monitor, maybe just because of it and Eclipse _poor_ state of proper UI presentation. Christian: Please test this .. if buggy, reopen quick for release 2.4.0 SWT/GTK High-DPI is a PIA: - GDK_SCALE renders offscreen and scales the image (wow & ugly) - GDK_DPI_SCALE works at least on the fonts properly - swt.autoScale is pretty much like: What will be scaled? It scales some icons in Eclipse, not fonts and result in Eclipse looks horrible. Maybe I just made this patch to vent about this poor state of things. Notable: KDE looks great and uses DPI, firefox some GDK_DPI_SCALE equivalent (OK) One also wonders why there is only a single scale dimension, where DPI differs x/y! But enough of my rant :)
* Bug 1362: Minimal action required: setBackground of the parent canvas before ↵Sven Gothel2019-04-091-1/+5
| | | | | | | reparenting! Bug 1362 fix or workaround: Seems SWT/GTK3 at least performs lazy initialization Minimal action required: setBackground of the parent canvas before reparenting!
* NewtCanvasJFX: Utilize JFXEDTUtil per default, supporting the Windows PlatformjavafxSven Gothel2019-03-211-5/+13
| | | | | | | | | | | | | On [GNU/Linux] X11 JFXEDTUtil is not required, since X11 can handle multi-threaded native parenting, however, the Windows platform does require JFXEDTUtil. Currently the default is to use JFXEDTUtil, which operates solely on the JavaFX thread for windowing lifecycle and even-dispatch operations. This behavior can be toggled via the boolean property 'jogamp.newt.javafx.UseJFXEDT', which currently defaults to 'true' This behavior might be analyzed in more detail for a fine grained EDTUtil decision.
* NewtCanvasJFX.NativeWindow: Delegate required child window canvas positionSven Gothel2019-03-211-2/+2
| | | | | | | | | | NewtCanvasJFX.NativeWindow shall pass through NewtCanvasJFX's Canvas position to properly position the NEWT child window inside the top level Window. NewtJFXReparentingKeyAdapter demonstrating manual reparenting demonstrates this case. TestGearsES2NewtCanvasAWT's default behavior is to use a surrounding border for the NEWTCanvasAWT child, similar to TestNewtCanvasJFXGLn.
* Tests: Adding API Doc for test utilizing NEWTDemoListener and derivationsSven Gothel2019-03-201-3/+7
|
* Adding NativeWindowHolder extends NativeSurfaceHolder; API Doc for ↵Sven Gothel2019-03-204-29/+83
| | | | | | | | | NEWTDemoListener NativeWindowHolder abstracts access to is-a or has-a parent component's NativeWindow like NewtCanvasAWT, NewtCanvasJFX and NewtCanvasSWT Adding API Doc for NEWTDemoListener.
* NewtCanvasSWT: Fix NOP WindowClosingProtocol.WindowClosingMode BehaviorSven Gothel2019-03-201-5/+7
|
* NewtCanvasJFX: Implement WindowClosingProtocol.WindowClosingMode BehaviorSven Gothel2019-03-202-9/+22
|
* NewtCanvasJFX: Clarify [dispose() -> destroy()] operationSven Gothel2019-03-201-8/+8
| | | | | This is automatically issued when receiving the javafx.stage.WindowEvent#WINDOW_CLOSE_REQUEST from the attached top-level JavaFX Window
* JavaFX: Add proper class doc for implementation and unit testSven Gothel2019-03-201-2/+12
|
* JavaFX: Adding JavaFX Support for NEWT utilizing native Window parenting via ↵Sven Gothel2019-03-191-0/+637
| | | | | | | | | | | | | | | | | | | | | NewtCanvasJFX NewtCanvasJFX, a JavaFX Canvas Node, allows attaching a native NEWT Window to the JavaFX Node's native Window (if attached). The mechanism is similar to NewtCanvasAWT. Current implementation supports placing the NEWT Window into the JavaFX scene of the native window correctly, as well as the following different lifecycles - attach NewtCanvasJFX to already visible group->scene->window - attach NewtCanvasJFX to not yet visible or attached group->scene->window - attach NEWT Window before or after NewtCanvasJFX's visibility The above is covered by unit test: TestNewtCanvasJFXGLn This is the initial commit for JavaFX support and has been tested on - OpenJDK 8 + OpenJFX 8 - GNU/Linux X11
* Bug 1238 - Fix NPE for Window-Icon's PNGPixelRect for unresolved location; ↵Sven Gothel2015-10-032-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | Bug 1199 - Add setting to disable default window icons Bug 1238 - Fix NPE for Window-Icon's PNGPixelRect for unresolved location, i.e. null URLConnections Testing w/ jogl/make/scripts/tests.sh USE_BUILDDIR=1, discloses this issue - since the icons are available in jar only. Handling all unresolved resources, i.e. null URLConnection, is required. Further more, the icon list passed via property 'newt.window.icons' shall be separated by comma as well. This allows passing the list via scripts more conveniently. -Dnewt.window.icons="newt/data/jogamp-16x16.png,newt/data/jogamp-32x32.png" +++ Bug 1199 - Add setting to disable default window icons This patch also allows disabling JogAmp's own window icons by simply defining a non-existing location, i.e. -Dnewt.window.icons="null,null"
* Bug 1237: Adopt GlueGen's clarification of IOUtil.getResource(..), commit ↵Sven Gothel2015-10-032-8/+8
| | | | | | | | d78bb1be0a6290cb94918b21865a023c01825048 - Skip relative lookup for IOUtil.ClassResources using 'asset' only (from JAR file) - Tested w/ jar file and build-dir, see scripts/tests.sh 'USE_BUILDDIR'
* NEWTDemoListener: Fix 'v' modifier collision of ctrl, use shift.Sven Gothel2015-09-261-1/+1
|
* NEWTDemoListener: Double-Mouse-Click Fullscreen only w/ 3 pointers involvedSven Gothel2015-09-191-1/+1
|
* TestGearsES2*AWT / NewtDemoListener: Show pixel-scale in title bar.Sven Gothel2015-09-181-1/+9
|
* Unit Tests: NEWTDemoListener: Less verbose; GraphUI-Demos: Show DPI and ↵Sven Gothel2015-09-171-11/+12
| | | | Pixel-Scale in GLEventListener.init(...)
* Bug 1211: Refine NEWTDemoListener, JOGLNewtAppletBaseSven Gothel2015-09-152-48/+72
| | | | | | | | | | | - NEWTDemoListener.createPointerIcons(..) - Use Display instance - Simplify PointerIcon creation using a list, skipping all non-found resources. - JOGLNewtAppletBase - Bring back reparent action via key 'r' - Drop redundant PointerIcon, using NEWTDemoListener
* Bug 1211: Hardening Condition-Wait from Spurious-Wakeups and unintended ↵Sven Gothel2015-09-153-96/+516
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InterruptedException(s) Below is an updated list of Condition-Wait classifications as described in Bug 1211. This list includes recent changes on GlueGen regarding this Bug 1211. A followup commit will address the unit tests. - Noncancelable + Persistent-Wait - GLMediaPlayerImpl.StreamWorker thread (changed) - pauses thread in case of intr - Cancelable + Persistent-Wait: - LFRingbuffer.getImpl(..) - LFRingbuffer.waitForFreeSlots(int) - SyncedRingbuffer.getImpl(..) - SyncedRingbuffer.waitForFreeSlots(int) - FunctionTask.invokeOnNewThread(..) (changed) - RunnableTask.invokeOnNewThread(..) (changed) - SharedResourceRunner.run() - SharedResourceRunner.doAndWait() (changed) - SharedResourceRunner.start() (changed) - SharedResourceRunner.stop() (changed) - GLMediaPlayerImpl.StreamWorker ctor (changed) - GLMediaPlayerImpl caller thread actions do*() (changed) - AndroidGLMediaPlayerAPI14.getNextTextureImpl(..) (changed) - DisplayImpl.enqueueEvent(..) (changed) -> Persistent-Wait -> Cancels wait and NEWTEvent -> dispatchMessage(NEWTEventTask): always notifyCaller! - GLDrawableHelper.invoke(..) (changed) - DefaultEDTUtil.waitUntilIdle() (changed) - DefaultEDTUtil.waitUntilStopped() (changed) - DefaultEDTUtil.invokeImpl(..) (changed) - DefaultEDTUtil.NEDT.run(..) (changed) - AWTEDTUtil.waitUntilStopped(..) (changed) - AWTEDTUtil.invokeImpl(..) (changed) - AWTEDTUtil.NEDT.run(..) (changed) - SWTEDTUtil.invokeImpl(..) (changed) - SWTEDTUtil.waitUntilStopped(..) (changed) - SWTEDTUtil.NEDT.run(..) (changed) - GLWorkerThread.invokeAndWait(..) - GLWorkerThread.start() (changed) - GLWorkerThread.WorkerRunnable.run() (changed) - Animator.run() (changed) - AnimatorBase.finishLifecycleAction() (changed) - OSXUtil.RunOnMainThread(..) (changed) - SingletonInstanceServerSocket.Server.shutdown() (changed) - SingletonInstanceServerSocket.Server.start() (changed) - com.jogamp.audio.windows.waveout.Mixer.shutdown() (changed) - Extending/Using InterruptSource.Thread (changed) - DefaultEDTUtil.NEDT - AWTEDTUtil.NEDT - SWTEDTUtil.NEDT - GLWorkerThread.thread - Mixer.FillerThread - Mixer.MixerThread - Using InterruptSource.Thread (changed) - TempFileCache - LauncherTempFileCache - Animator.thread - SingletonInstanceServerSocket.Server.serverThread Deprecated: - FunctionTask.invoke(..) (changed) -> on current thread, no wait -> deprecated - RunnableTask.invoke(..) (changed) -> on current thread, no wait -> deprecated
* Bug 1188: Refine getSupportedStateMask() semantics and minimum requirements ↵Sven Gothel2015-08-311-8/+13
| | | | | | | | | (adding STATE_MASK_FULLSCREEN) Refine getSupportedStateMask(): - always for _after_ native creation, i.e. first visibility - removed STATE_MASK_AUTOPOSITION - adding STATE_MASK_FULLSCREEN to minimum requirements
* Bug 1202 - Add support of Adaptive Vsync via [GLX|WGL]_EXT_swap_control_tearSven Gothel2015-08-273-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [GLX|WGL]_EXT_swap_control_tear extensions support asynchronous buffer swaps, i.e. adaptive Vsync. <https://www.opengl.org/wiki/SwapInterval_aka_vsync#Adaptive_Vsync> <https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt> <https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt> <http://keithp.com/blogs/async_flip/> The extensions utilizes a negative interval value, enabling late swaps to occur without synchronization to the video frame. Hence '-1' has new semantics, previously it was the 'default value' of 'untouched vsync interval'. New default is: - 0 for unrealized context - 1 for realized context +++ It requires [GLX|WGL]_EXT_swap_control, hence we shall ensure to use use this extension in the implementation of GLContext.setSwapInterval(..). +++ Mesa3D seems to support GLX_SGI_swap_control only. +++ Implemented on Windows and X11. +++ On GNU/Linux using NVidia driver w/ my setup(*), sadly the query GLX.glXQueryDrawable(displayHandle, drawable.getHandle(), GLX.GLX_LATE_SWAPS_TEAR_EXT, val); always returns zero here, indicating async vsync is not supported. (Queried the attribute for every frame in windowed or fullscreen mode) Fullscreen (*) - Debian 8 - Kernel 3.16 - KDE/Kwin - GL Version 4.5 (Core profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - 4.5.0 NVIDIA 355.06 [GL 4.5.0, vendor 355.6.0 (NVIDIA 355.06)] - GL_RENDERER GeForce GTX 660/PCIe/SSE2 - Samsung U28D590 (DFP-4): Internal DisplayPort +++
* Bug 1188: Fix API doc of getSupportedStateMask(); Misc Changes (see below)Sven Gothel2015-08-251-14/+14
| | | | | | | | - Fix STATE_MASK_CREATENATIVE - Simplify resetStateMask() - Windows WindowDriver: Remove STATE_MASK_STICKY from supported states - TestGearsNEWT: Use NEWTDemoListener
* Bug 1188: Introduce getSupportedStateMask() implemented via WindowDriver's ↵Sven Gothel2015-08-212-0/+55
| | | | | | | | | | | | | getSupportedReconfigMaskImpl() - See getSupportedStateMask() for semantics - getSupportedReconfigMaskImpl() result now used for isReconfigureMaskSupported() - getSupportedReconfigMaskImpl() implementations: - Full featured: X11, Windows and OSX - X11: Use WindowManager Atoms for certain features (dynamic) - Others: Use fixed features. - TODO: Consider avoiding actions if not supported.
* Bug 1188: Cleanup public/private[reconfig, non-reconfig] state bitsSven Gothel2015-08-191-5/+2
| | | | | | | | | - STATE_BIT_FULLSCREEN_SPAN is private and used for reconfigure, hence STATE_BIT_COUNT_RECONFIG is needed. - STATE_BIT_FULLSCREEN_SPAN is added at the end of public state bits - PSTATE_BIT_MINMAXSIZE_SET is unused.
* Bug 1188: Add @since 2.3.2 tagSven Gothel2015-08-181-14/+83
|
* Bug 1188, Bug 1186: NEWT Window: Support non-resizable, minimize, maximize, ↵Sven Gothel2015-08-102-6/+338
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | alwaysOnBottom and sticky/all-desktop (Part 1) Change also implements Bug 1186: 'NEWT Window: Use a Bitfield holding all state flags and expose it accordingly', since it is essential for an efficient implementation. Part 1: - Bug 1186 - Using Bitfield, holding public (Window) and private state bits/mask - Bug 1188 - Window adds: - [is|set]AlwaysOnBottom(..), - [is|set]Resizable(..), - [is|set]Sticky(..), - [is|set]Maximized(..), - isChildWindow(), - Full implementation for X11 - TODO: Implement for OSX and Windows - Manual tests: - TestGearsES2NEWT, TestGearsES2NEWTSimple and TestGearsES2NewtCanvasAWT utilize new NewtDemoListener, which has a key-listener to perform all [new] actions. See source code of NewtDemoListener.
* Adapt to GlueGen's Bitfield Changes (commit ↵Sven Gothel2015-08-022-4/+4
| | | | 047e9adaf2a5f51f7acfa194a744c99b6bfadaea)
* Use GlueGen's Bitfield instead of IntBitfieldSven Gothel2015-07-302-6/+6
|
* Bug 1154 - Make plugin3-public.jar optional: Part 1 / 2 (Relocate Applet3 ↵Sven Gothel2015-07-282-2/+3
| | | | classes)
* Bug 1181 - JOGL WebStart Applications using GLCanvas/AWT may Deadlock by two ↵Sven Gothel2015-07-271-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | AWT-EDT on Java >= 1.8.0_45 Root cause: - AWT Toolkit global Lock Our locking scheme (AWT-EDT-1): - Surface Lock - sun.awt.SunToolkit.awtLock() - Component.getGraphicsConfiguration() -> synchronized(Component.getTreeLock()) Other AWT-EDT-2 by Webstart: - synchronized(Component.getTreeLock()) - sun.awt.SunToolkit.awtLock() Results in a deadlock. Solution: - Issue Component.getGraphicsConfiguration() before awtLock(), where Component.getGraphicsConfiguration() is being used to detect possible reconfiguration. - Also use updated AWTGraphicsConfiguration's GraphicsConfiguration if no 'new' detection is required.
* Bug 1184 - JOGL AWT Canvas Components don't update AWTGraphicsConfiguration ↵Sven Gothel2015-07-271-2/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | when reconfigured. JOGL AWT Components, e.g. GLCanvas or NewtCanvasAWT, may be reconfigured by moving them to another display/monitor or by other means. Since AWT has no means to notify the user code via an event, JOGL components usually determine the reconfiguration via the override 'GraphicsConfiguration getGraphicsConfiguration()'. GLCanvas is sensible to this reconfiguration, however its AWTGraphicsConfiguration (owned via JAWTWindow) is not changed. Implement reconfiguration detection for all JOGL AWT Components and update the AWTGraphicsConfiguration if required. For now, constraint reconfiguration on GraphicsDevice change as currently implemented in GLCanvas. The updated AWTGraphicsConfiguration allows using the updated GraphicsDevice as it might be required for further information, e.g. pixel-scale on OSX.
* Bug 1151 - Fix using DK1 on OVR 0.5*; Minor changesSven Gothel2015-07-201-0/+2
|
* StereoDeviceUtil: Only rotate if current mode doesn't match required ↵Sven Gothel2015-03-271-2/+9
| | | | | | rotation. Add verbosity. Allowing user to permanently rotate the device ..
* Bug 1116 - Add OculusVR DK2 Support - Part-1 (DK2 on DK1 SDK w/o Eye Tracker)Sven Gothel2015-03-211-0/+91
| | | | | | | | | | | | | | | | | - DK2's screen on X11 (at least) starts in rotated mode, detect and apply MonitorDevice rotation via NEWT's OpenGL StereoDeviceUtil - Move StereoDevice.Config -> StereoDeviceConfig - Expose generic StereoDevice to public: GenericStereoDeviceConfig + GenericStereoDeviceFactory - GenericStereoDeviceFactory exposes public GenericStereoDeviceConfig creation for mono, sbs-stereo and lense-sbs-stereo w/ diff. parameters. - Pass eye surface/texture size for each eye from device to renderer, instead of assuming unified values. - Unify GenericStereoDevice.createRenderer(..) and OVRStereoDevice.createRenderer(..) code
* Bug 1147 - Fix XRandR13 Usage: Rotate / Change-Mode, use unique CRTC/Mode ↵Sven Gothel2015-03-201-0/+1
| | | | | | | | | | | | | | | | | | | | | ids, .. RandR 1.3 XRRSetCrtcConfig related: - X11RandR13 now sets the new screen size via XRRSetScreenSize(..) - X11RandR13 now propagates RRScreenChangeNotify events via XRRUpdateConfiguration(event). Hence reporting virtual desktop size now. - X11RandR13 now disables the CRTC before XRRSetCrtcConfig(..) to avoid invalid configuration (see spec)! RandR 1.3 General: - Uses unique id named instead of unstable index for modes and CRTC. This allows proper identification even for 'swizzled' devices.
* MonitorDevice.toString: More brief 'options' ..Sven Gothel2015-03-091-1/+1
|
* Bug 1142 - NEWT: Add support to retrieve the primary MonitorDeviceSven Gothel2015-03-092-7/+42
| | | | | | | | | | | | | | | | | Support added for - Windows - X11 XRandR 1.3 - OSX Note: Our whole MonitorMode association handling is currently _not_ dynamic. - only on Windows we actually use native unique ID, which might not change (adapter and monitor idx) - On OSX and X11 we simply use indices, but if monitor setup changes - they refer to different instances. In case it is desired to cover dynamic monitor setup change, we need to address this issue in a new bug entry.
* Bug 1130 - Add Mapping from AWT Component -> NEWT [Screen, MonitorDevice]Sven Gothel2015-02-171-0/+12
| | | | | | | | | | | | | | | | | | | | | | | The mapping AWT Component -> NEWT [Screen, MonitorDevice] shall allow generic AWT applications to utilize NEWT's MonitorDevice information like physical monitor-size and DPI. - AWT-Component -> NEWT-Display: - NewtFactoryAWT.createDisplay - AWT-Component -> NEWT-Screen: - NewtFactoryAWT.createScreen - AWT-Component -> NEWT-MonitorMode: - NewtFactoryAWT.getMonitorDevice - NewtFactoryAWT.getMonitorDevice - If OSX, utilizing OSX's AWT Component -> MonitorDevice-Index mapping - Otherwise using the coverage to identify MonitorDevice See TestGearsES2GLJPanelAWT 'GetPixelScale', demonstrating the mapping while pressing 'p' (cached MonitorMode) and pressing SHIFT-'p' (non-cached MonitorMode).
* MonitorDevice: Add 'throws IllegalStateException' for ↵Sven Gothel2015-02-171-3/+4
| | | | [query|set]CurrentMode(..) if !screen.isNativeValid()
* NEWT MonitorDevice: Identify cloned devices (fully covered) ; Windows: ↵Sven Gothel2015-02-173-16/+27
| | | | | | | | | | | | | | | | | | | Iterate-over and identify all adapter:monitor. (Bug 1129) - Identify cloned devices (fully covered) - MonitorDevice gets 'isCloned()' to identify whether it is a cloned device, i.e. fully covered by another monitor. This detection may happen natively but will always performed platform agnostic. - getMainMonitor(..) now exclude 'cloned' devices - Windows: Iterate-over and identify all adapter:monitor - Since we also list cloned monitor, we need to iterate over all adapter and all it's monitor-devices. - The native monitor-id is now defined as: ( adapter-idx << 8 ) | monitor-idx. - Bug 1129 <- listed under this bug entry for convenience
* Bug 1129 - NEWT MonitorDevice's physical size on Windows must be read via EDIDSven Gothel2015-02-161-0/+5
| | | | | | | | | | | | | | | | | | | On Windows, one must read the monitor's EDID data as stored in the registry, no 'simple' API works otherwise. The proper way requires utilizing the Windows Setup-API. This code is inspired by Ofek Shilon's code and blog post: <http://ofekshilon.com/2014/06/19/reading-specific-monitor-dimensions/> See: function 'NewtEDID_GetMonitorSizeFromEDIDByModelName' In contrast to Ofek's code, function 'NewtEDID_GetMonitorSizeFromEDIDByDevice' uses the proper link from DISPLAY_DEVICE.DeviceID -> SP_DEVICE_INTERFACE_DETAIL_DATA.DevicePath, where DISPLAY_DEVICE.DeviceID is the monitor's enumeration via: EnumDisplayDevices(adapterName, monitor_idx, &ddMon, EDD_GET_DEVICE_INTERFACE_NAME); Hence the path to the registry-entry is well determined instead of just comparing the monitor's model name.