aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt/native
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1249 - NEWT X11: setVisible(false) IconicState/_NET_WM_STATE_HIDDEN: ↵Sven Gothel2015-10-091-4/+6
| | | | | | | | | | | Handle case where KDE unmaps the window Update our internal JavaWindow.isMapped according to MapNotify and UnmapNotify. This takes care of a situation (KDE) where a window is unmapped during IconicState. For unmapped windows we cannot interprete _NET_WM_STATE_HIDDEN and we have to issue XMapWindow for restoring the window.
* Bug 1249 - NEWT X11: setVisible(*) _NET_WM_STATE_HIDDEN update not received ↵Sven Gothel2015-10-093-42/+64
| | | | | | | | | | | | | | | | | | | | | | at ConfigureNotify event (2) On gnome shell WM, sometimes KDE WM, it has been observed that the _NET_WM_STATE_HIDDEN update (visible or invisible) is not received at ConfigureNotify event. Turns out the state is finally updated at FocusOut! This change tests _NET_WM_STATE_HIDDEN visibility hint for mapped window also for FocusIn and FocusOut events, besides the ConfigureNotify event. Further more, NormalState to restore a hidden but mapped window did not work, so it is no more being sent. We limit us here to _NET_ACTIVE_WINDOW. 2 unit tests are prepared to test this issue: - TestGLWindows00NEWT - TestParenting01NEWT
* Bug 1249 - NEWT X11: setVisible(false) IconicState not listening to ↵Sven Gothel2015-10-084-108/+164
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _NET_WM_STATE_HIDDEN; setVisible(true) not restoring from _NET_WM_STATE_HIDDEN Using Gnome Shell 3.14.4-1~deb8u1 disclosed an issue w/ our newly utilized IconicState/_NET_WM_STATE_HIDDEN, i.e. visibleChanged(false) was never received. This is a regression of commit 2d837a7a7130702ad36b694875613fae77c7ef06, which utilizes WM_CHANGE_STATE_IDX + IconicState for visibility on top-level windows. This bug consist out of _two_ isssue: 1) setVisible(false) IconicState not listening to _NET_WM_STATE_HIDDEN Here, we 'listen' to _NET_WM_STATE_HIDDEN when receiving ConfigureNotify if supported _and_ XMapWindow has been issued. In such case existence/non-existence of _NET_WM_STATE_HIDDEN determines visibility. Otherwise, we have wait for MapNotify/UnmapNotify. The 'XMapWindow has been issued' criteria is tracked by new field 'JavaWindow.isMapped' and set/cleared when we actually issue XMapWindow/XUnmapWindow! 2) setVisible(true) not restoring from _NET_WM_STATE_HIDDEN It has been observed that restoring IconicState/_NET_WM_STATE_HIDDEN via XMapWindow or even NormalState may not work reliably on WMs. See <https://stackoverflow.com/questions/30192347/how-to-restore-a-window-with-xlib> Hence we restore from this WM state via NormalState _and_ _NET_ACTIVE_WINDOW. Both strategies seem to work well on KDE as well as on Gnome.
* Bug 1205: Revert clear background to support fix for Bug 1232: NEWT ↵Sven Gothel2015-10-011-7/+24
| | | | | | | | | | Translucency Windows >= 8 Reverting 'clear backrgound' portion of commit f607c0148736fa198fb91b60123824e53366022e. It has been identified, that Windows does initialize onscreen windows (i.e. w/ white/DESKTOP color). This is also required for allowing translucent windows, since clearing the background intefers on Windows >= 8 (undecorated windows).
* Bug 1232 - NEWT Translucent Decorated Windows Not Working On Windows >= 8 ↵Sven Gothel2015-10-011-58/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Lack of Aero / Blur ) Adopting new undocumented user32.dll Windows >= 8 API: - SetWindowCompositionAttribute / AccentState See: - <https://github.com/riverar/sample-win10-aeroglass/blob/master/MainWindow.xaml.cs> - <http://withinrafael.com/adding-the-aero-glass-blur-to-your-windows-10-apps/> - <http://undoc.airesoft.co.uk/user32.dll/SetWindowCompositionAttribute.php> - <http://undoc.airesoft.co.uk/user32.dll/GetWindowCompositionAttribute.php> +++ Cleaning up WindowsDWM.h, use on header file (in stub_includes) for GlueGen and implementation. +++ Merge java implementation within GDIUtil.DwmSetupTranslucency(..), to be utilized by NEWT and JOGL. NEWT issues GDIUtil.DwmSetupTranslucency(..) at creation and when toggling decoration. Toggling decoration on Win >= 8 leads to lost of translucency when returning to decorated window. On Win 7, this may work .. but is also buggy. +++ Followup patch is needed for NEWT to _not_ clear the background!
* Bug 1205 - NEWT Security: Clear framebuffer after creation and before ↵Sven Gothel2015-09-291-45/+125
| | | | | | | | | | | | | | | | | | | visibility (Windows Onscreen) WindowsWindow.c: - WindowUserData.isInCreation set while window at initizalization, i.e. before final size/pos/visibility. Also no visibility until final NewtWindow_setVisiblePosSize(..) call. This is possible since even w/o ShowWindow upfront, UpdateInsets(..) is able to gather accurate values. - Suppress any Java callback while WindowUserData.isInCreation, issue one callback when window is final. Use newly accumulated callback WindowImpl.sizePosInsetsFocusVisibleChanged(..) - While WindowUserData.isInCreation, WM_PAINT triggers WM_ERASEBKGND and WM_ERASEBKGND actually erases background w/ window background color.
* Bug 1222 - NEWT OSX: setAlwaysOnTop() and setAlwaysOnBottom() not workingSven Gothel2015-09-263-51/+20
| | | | | | | | | | | | - The NSWindow level must be set at window creation - Levels are - aontop: kCGMaximumWindowLevel - aonbottom: kCGDesktopIconWindowLevel (w/ input) - normal: NSNormalWindowLevel - Hence we need to recreate the NSWindow if toggling the state, similar to opaque .. etc.
* Bug 1214: Fix Deadlock in screenPositionChanged(..); Use ↵Sven Gothel2015-09-262-43/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | screenPositionChanged(..) in size[Screen]PosInsetsChanged(..) on OSX; Cleanup OSX Code - Fix Deadlock in screenPositionChanged(..) Defer requires to spawn whole child-window action to another thread since we may come from native 'NewtWindow::windowDidMove()' on MainThread. - Use screenPositionChanged(..) in size[Screen]PosInsetsChanged(..) on OSX Move callback WindowImpl::sizePosInsetsChanged(..) to OSX's WindowDriver::sizeScreenPosInsetsChanged(..), since we need to use screenPositionChanged(..) to calculate child window relative position to parent. I.e. we receive the location on screen. - Cleanup OSX Code - Native JNI entries shall handle NULL windowHandle -> return - Clarify usage of 'getWindowHandle()' and use 'isNativeValid()' if appropriate. - Don't re-use cached getWindowHandle() for non-blocking off-thread actions, since handle may become invalid. - Clarify getLocationOnScreen*(..) implementation code, i.e. separate getLocationOnScreenByParent(..) semantics.
* Bug 1214 - NEWT MacOSX: Detect auto-resize of Window when it is larger than ↵Sven Gothel2015-09-253-10/+52
| | | | | | | | | | | screen - On OSX (similar to X11) a created window with size > screen will get resized to fit screen size implicitly. - Fix detects insets, position and size after onscreen window creation. - Patch also merges insets and size change java callback
* Bug 1205 - NEWT Security: Clear framebuffer after creation and before ↵Sven Gothel2015-08-311-10/+9
| | | | | | | | | | | | | | | | visibility (X11 Onscreen) X11Window.c: Adding CWBackPixel BlackPixel(..) resulting in an initial black window (zero). com.jogamp.opengl.test.junit.newt.TestWindows02NEWT shows the content w/ opaque background and transparent one. Note: To be able to receive a transparent background, one needs to utilize a compositor WM (e.g. KWin w/ effects enabled). Due to commit cf9e2f2cb8ead7efd7751dcbfaecb36ed06cf9d6 (Bug 1210) this works in pure NEWT mode w/o utilizing GLX.
* Bug 1188: NEWT WindowsWindow.c: Better support for 'isOnBottom' on Windows ↵Sven Gothel2015-08-261-14/+68
| | | | | | | | | | | | | | | | | | | | | | (Fullscreen on Bottom not working though) - Terminology - ALWAYSONBOTTOM -> isOnBottom - ALWAYSONTOP -> isOnTop - Better support for 'isOnBottom' on Windows - Refine 'SetWindowPos(..)' calls to handle isOn[Top|Bottom] - Refine 'ShowWindow(..)' calls to handle isOnBottom - Intercept WM_WINDOWPOSCHANGING to enforce isOn[Top|Bottom], i.e. change params (hwndInsertAfter and flags). - Fullscreen on Bottom not working - While we change all flags appropriately (NOACTIVATE, ..) and don't issue CDS_FULLSCREEN is on bottom, Windows seems to enforce the window to be on top if it is sized to the screen maximum.
* NEWT WindowsWindow.c: Fix return value; Add tracking of inOn[Bottom|Top]Sven Gothel2015-08-251-4/+24
|
* Bug 1188: Introduce getSupportedStateMask() implemented via WindowDriver's ↵Sven Gothel2015-08-211-2/+30
| | | | | | | | | | | | | 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 1196: Fix Unresolved strncpy_s (MSVCRT) on WinXPSven Gothel2015-08-201-2/+8
| | | | | | | | | | Unresolved strncpy_s (MSVCRT) on WinXP, as shown w/ dependency walker (red module, red unresolved line). Mapped: _tcsncpy_s -> strncpy_s (!UNICODE). On WinXP MSVCRT has no strncpy_s. _tcsncpy_s(sOut, sOutLen, s, len) -> bound-check + _tcsncpy(sOut, s, len)
* Bug 1188: Cleanup public/private[reconfig, non-reconfig] state bitsSven Gothel2015-08-191-1/+3
| | | | | | | | | - 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.
* Merge branch 'Bug1183' of https://github.com/xranby/joglSven Gothel2015-08-181-0/+8
|\
| * Bug 1183: X11RandR13 XRRGetScreenResourcesCurrent _occasionally_ reports ↵Xerxes Rånby2015-08-161-0/+8
| | | | | | | | empty data
* | Bug 1192: NEWT native/X11Display.c Cleanup JNI signatures in commentsXerxes Rånby2015-08-131-6/+6
|/
* Bug 1188: Windows: Implement unresizable using appropriate windows stylesSven Gothel2015-08-121-104/+51
| | | | | | | - to avoid resizing when toggling resizable (change of window border) we maintain 'RECT insets' in our WindowUserData struct and fix the client -> top position late in NewtWindow_setVisiblePosSize(..) after any style change.
* Bug 1188: Refine Maximized on X11 / Impl. Maximized and Iconify on WindowsSven Gothel2015-08-124-102/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | WindowImpl - remove updateMinMaxSize(..) - unused info - fix appendStateToString: show all maximized state changes if reconfig - add sizePosMaxInsetsChanged(..) and sendMouseEventRequestFocus(..) accumulating multiple callbacks from impl. - add: maximizedChanged(..) notification from native impl. - refine manual maximized mode used for OSX and Windows (single extent) - reconfigMaximizedManual(..) - resetMaximizedManual(..) X11 WindowDriver: - Update maximized at xreconfig, read from _NET_WM_STATE - Use less Java callbacks from JNI Windows WindowDriver: - Use native maximized, if HORZ && VERT, otherwise use manual maximized for single extent. - Invisible of top-window -> MINIMIZED/ICONIFY showing the app in task-bar.
* Bug 1188: Fix regression on X11 setVisible: in-visibility never reached on ↵Sven Gothel2015-08-111-5/+8
| | | | | | | | | child windows It has been experienced that UnmapNotify is not sent for child windows when using IconicState! Hence the visible:=false event never reaches the Window, causing an error. This patch only uses IconicState for top-level windows and if requested.
* Bug 1183: Cleanup x11/RandR javadoc and native/X11RandR13 signature commentsXerxes Rånby2015-08-101-2/+2
|
* Bug 1188, Bug 1186: NEWT Window: Support non-resizable, minimize, maximize, ↵Sven Gothel2015-08-109-399/+914
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Bug 1176: BCM VC IV: Refine clamping of window position and size at native ↵Sven Gothel2015-07-171-2/+0
| | | | | | | | | | | | | | | creation - Refines commit a566a1b5a2828b38f1a5c4dfb215ab9b03e7acaa - Issue clamping at 'canCreateNativeImpl()' instead of 'createNativeImpl()', allowing to define clamped position and size before utilizing these values at caller 'createNative()'. Otherwise a clamped position would cause to wait for the original position after 'createNativeImpl()'. This also allows to remove the positionChanged(..) / sizeChanged(..) calls in the native CreateWindow0() implementation.
* Bug 1176: Clamp window position and size to 0/0 and screen-size, avoiding ↵Sven Gothel2015-07-171-1/+3
| | | | | | | | | | | | | out-of screen window positions on BCM VC IV hardware Out of screen window positions on BCM VC IV hardware cause: - Misalignment of self-rendered mouse-pointer / window due to window-offset. - Artifacts when moving the mouse pointer partially out of screen. We still need to add the window position to rel. mouse-pointer position.
* Bug 1148 - OSX MonitorDevice: Use unique and native deviceID instead of indexSven Gothel2015-03-212-46/+80
| | | | | | | | | | | | | Adopt to bug 1147, commit 2c88b6dfd4eb7e2cd9a50fa48e08ecafc980931a. Using the native unique deviceID makes monitor identification more robust. This also allows us simplify displayID -> NSScreen-idx -> MonitorDevice into displayID -> MonitorDevice and to survive a primary monitor change.
* Bug 1147 - Fix XRandR13 Usage: Rotate / Change-Mode, use unique CRTC/Mode ↵Sven Gothel2015-03-207-133/+591
| | | | | | | | | | | | | | | | | | | | | 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.
* Bug 1142 - NEWT: Add support to retrieve the primary MonitorDeviceSven Gothel2015-03-094-33/+77
| | | | | | | | | | | | | | | | | 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 1135 - Cleanup: Fix native code WarningSven Gothel2015-03-064-5/+5
|
* NEWT MonitorDevice: Identify cloned devices (fully covered) ; Windows: ↵Sven Gothel2015-02-174-47/+44
| | | | | | | | | | | | | | | | | | | 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-163-37/+580
| | | | | | | | | | | | | | | | | | | 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.
* Bug 682 - Relocating javax.media.opengl.* -> com.jogamp.opengl.* (Part 1)Sven Gothel2015-02-021-2/+2
| | | | | | | | | sed -i 's/javax\.media\.opengl/com\.jogamp\.opengl/g' `grep -Rl "javax\.media\.opengl" src` sed -i 's/javax\.media\.nativewindow/com\.jogamp\.nativewindow/g' `grep -Rl "javax\.media\.nativewindow" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" doc` Manually edited all occurences within make/**
* Bug 1120 - Refine HiDPI Support ( Part-2 ) (API CHANGE)Sven Gothel2015-01-272-7/+17
| | | | | | | | | | | | | | | | | | | | | | - Use float[2] for pixel-scale. Utilize simple integer rounding: int-pixel-units = (int) ( int-window-units * pixel-scale + 0.5f ) - Provide minimum and maximum allowed pixel-scale values to be set by platform, supporting generic pixel-scale validation. - Remove 'OSXUtil.GetPixelScale(final RectangleImmutable r, final int[] screenIndexOut)', implementation for all platforms would cause huge redundancy of Screen and MonitorDevice code (duplication of NEWT). - instead, add 'float[2] pixelScale' to NEWT's MonitorDevice - Detect change of pixel-scale and propagate accordingly. This allows GLCanvas, GLJPanel and NewtCanvasAWT instances to be dragged between monitor devices w/ different pixel-scale. - OSX: Handle native triggered reshape events off-thread to avoid EDT congestion due to locked window when consuming deferred events on EDT.
* Bug 1065: Handle NULL result of TISGetInputSourceProperty(keyboard, ↵v2.2.1Sven Gothel2014-09-081-2/+7
| | | | kTISPropertyUnicodeKeyLayoutData), avoiding crash
* Bug 741 HiDPI: Add ScalableSurface.getNativeSurfaceScale(..) to compute ↵Sven Gothel2014-06-091-5/+5
| | | | | | | | | | | | | | surface DPI ; Add NEWT Window.getPixelsPerMM(..) to query surface DPI With HiDPI and surface scale, we need knowledge of the native surface's pixel-scale matching the monitor's pixel-per-millimeter value. Preserving the queried native pixel-scale and exposing it via ScalableSurface.getNativeSurfaceScale(..) to compute surface DPI. Add NEWT Window.getPixelsPerMM(..) to query surface DPI. Surface DPI is demonstrated in GraphUI's GPUUISceneGLListener0A .. and TestRulerNEWT01, etc ..
* Bug 741 HiDPI: Add ScalableSurface interface to get/set pixelScale w/ full ↵Sven Gothel2014-06-082-18/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OSX impl. Add ScalableSurface interface - To set pixelScale before and after realization - To get pixelScale - Implemented on: - NEWT Window - Generic impl. in WindowImpl - OSX WindowDriver impl. - Also propagetes pixelScale to parent JAWTWindow if offscreen (NewtCanvasAWT) - AWT WindowDriver impl. - JAWTWindow / OSXCalayer - AWT GLCanvas - AWT GLJPanel - NEWTCanvasAWT: - Propagates NEWT Window's pixelScale to underlying JAWTWindow - WrappedSurface for pixelScale propagation using offscreen drawables, i.e. GLJPanel - Generic helper in SurfaceScaleUtils (nativewindow package) - Fully implemented on OSX - Capable to switch pixelScale before realization, i.e. native-creation, as well as on-the-fly. - Impl. uses int[2] for pixelScale to support non-uniform scale. Test cases: - com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT - com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2AWT - com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2GLJPanelAWT - com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NewtCanvasAWT - Press 'x' to toggle HiDPI - Commandline '-pixelScale <value>' - Added basic auto unit test (setting pre-realization)
* Bug 1012: Fix erroneous handling of multiple monitor coordinates on OSX with ↵Sven Gothel2014-05-261-19/+52
| | | | | | | | | | | NEWT To properly convert Top-Left (TL) from/to Bottom-Left (BL) coordinates we need to utilize the given CGDisplay viewport (TL) and NSScreen (BL) to perform the y-flip. This is especially true for the case of having multiple monitors covering different viewports (mixed resolution).
* Bug 741 HiDPI: Refine Monitor/Screen [virtual] Viewport Definition / Add ↵Sven Gothel2014-05-266-63/+141
| | | | | | | | | | | | | | | | | | | | NEWT Support / Fix JAWT getPixelScale deadlock - NativeWindow/Surface/NEWT API DOC: Define Coordinate System of Window and Screen - OSXUtil: Add getPixelScale(..) via Screen index and 'windowOrView' - JAWTWindow/JAWTUtil.getPixelScale(..): Use pre-fetched AWT GraphicsConfiguration to solve AWT-TreeLock (deadlock) - [Virtual] Viewport of MonitorDevice and Screen: - Properly calculate and expose [virtual] viewport in window and pixel units - OSX Monitor viewports in pixel units are 'reconstructed' - Window/Viewport to Monitor selection shall be perfomed via window units (unique) - OSX NEWT Window create/init (native): Use given size and coordinates even in fullscreen mode Don't override by quering NSScreen coordinates, trust given values. - Fix test cases, i.e. usage of pixel- and window-units
* Bug 970: NEWT OSX ChildWindow setVisible(..) does not hide child window ↵Sven Gothel2014-02-101-8/+12
| | | | | | | appropriately Instead of using [mWin orderBack: mWin] for child windows, utilize [mWin orderWindow: NSWindowOut relativeTo: [pWin windowNumber]]
* [Jogl|Nativewindow|Newt]Common: Align all ↵Sven Gothel2014-01-115-177/+120
| | | | | | | | | | | *Common_GetJNIEnv()/_ReleaseJNIEnv() Methods and Usage / Check arguments .. Since we still don't use inter-module native code sharing, align the JNIEnv get/release methods and usage. Most beneficary here is OSX and the GLDebugMessageHandle, both managed the JVM handle on their own - removed now. Also ensuring that *Common_init(..) is called for all modules on all platforms.
* X11: Harden usage of 'XGetWindowProperty(..)' and 'XGetVisualInfo' - Add ↵Sven Gothel2014-01-111-28/+38
| | | | missing XFree(..) calls and argument checks.
* BCM_VC_IV: Add 2 references (_poor_ API docs, very)Sven Gothel2014-01-092-0/+8
|
* NEWT Rasp.Pi: Add Support for multiple Windows, dynamic set size and positionSven Gothel2014-01-091-52/+30
| | | | | | | | Impl. manages up-to 32 windows (BCM layer elements) - dunno whether this is a proper value. Note: Layer 2000 is reserved for out PointerIcon. Removed 'dead code'.
* NEWT bcm_vc_iv.c: Disable VERBOSE_ONSven Gothel2014-01-091-2/+2
|
* Bug 676 - Add support for native Mouse Pointer rendering (Rasp.-Pi.)Sven Gothel2014-01-092-34/+416
| | | | | | | | | | | | | | - Utilizing layer element 2000 for PointerIcon - Using NEWT PointerIcon code - Using MouseListener to update PointerIcon position - FIXME: Check whether we shall intercept sendMouseEvent directly (lag) Misc: - Properly open, assign and close the BCM display handle - Properly destroy the window (BCM element) - Prepare for multiple windows, set position and size
* Bug 935: NEWT PointerIcon: Utilize Toolkit Agnostic PixelFormat and ↵Sven Gothel2014-01-084-20/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conversion Utilities (Allowing 'arbitrary' PointerIcon data input) Commit fe28bc125429b38cdcd016746081f4a6d521c6fd added the notion of toolkit agnostic PixelFormat and conversion utilities, utilized and further tested by this patch. +++ - PointerIcon is a PixelRectangle and hence holds the decoded data. This allows on-the-fly conversion if required as well as recreation w/o PNG re-decoding. - Using array-backed PointerIcon data where possible, allowing better performance when converting PixelFormat etc. - NEWT Display adds 'createPointerIcon(final IOUtil.ClassResources pngResource...' method to support agnostic PointerIcon creation. - NEWT Display adds methods to allow users to avoid PixelFormat and Buffer NIO type forced conversion: - PixelFormat getNativePointerIconPixelFormat() - boolean getNativePointerIconForceDirectNIO() +++ PNGImage -> PNGPixelRect Deleted: com.jogamp.opengl.util.texture.spi.PNGImage Added: com.jogamp.opengl.util.PNGPixelRect (We hope nobody was using PNGImage directly since it was a service-plugin for TextureIO) PNGPixelRect is a PixelRectangle PNGPixelRect actually is implemented OpenGL agnostic, however - since our PNGJ support lives under package 'jogamp.opengl.util.pngj' it cannot be moved up (yet). PNGPixelRect now handles all PixelFormat for the target format and also added support for grayscale+alpha (2 channels). The latter is force-converted to RGB* - similar to paletted. Further more, PNGPixelRect allows simply passing an OutputStream to write the PNG data. Used by: TextureIO and NEWT +++ - OffscreenSurfaceLayer's setCursor(..) uses the agnostic PixelRectangle instead of a PNG resource. - AWTMisc uses the PixelRectangle to produce the AWT Cursor and converts it to the required format. Hence same pixels are used for NEWT and AWT pointer/cursor icon. - TestGearsES2Newt and NewtAWTReparentingKeyAdapter 'tests' iterate over 3 custom PointerIcon when pressed 'c'. - JOGLNewtAppletBase uses the new custom PointerIcon 'newt/data/crosshair-lumina-trans-32x32.png', which is included in NEWT (213 bytes only). -
* NEWT OSX: Add missing NewtCommon_init(env) (duh!) - Issuing ↵Sven Gothel2014-01-051-31/+28
| | | | | | | NewtCommon_throwNewRuntimeException(..) if given references are of invalid type Missing NewtCommon_init(env) always lead to a crash when calling NewtCommon_throwNewRuntimeException(..) due to uninitialized clazz instances!
* Bug 935: NEWT Windows Pointer-Icon WM_SETCURSOR: Don't use DefWindowProc, ↵Sven Gothel2014-01-051-14/+35
| | | | SetCursor(..) if HTCLIENT && isChildWin && customCursor
* Bug 935: NEWT Windows Window-Icon: Use WNDCLASSEX w/ Small/Big Default Icons ↵Sven Gothel2014-01-051-8/+1
| | | | | | | | (NativeWindow GDI / NEWT ) .. this allows using the icon definition of WNDCLASSEX instead of setting them at CreateWindow0(..). - NativeWindow GDIUtil/RegisteredFactory uses WNDCLASSEX and Small/Big Defailt Icons
* Bug 935: NEWT Windows Window-Icon: Fix Window-Icon Visibility after ↵Sven Gothel2014-01-041-0/+4
| | | | | | | Reparenting CHILD -> TOP Hiding the window via 'ShowWindow(.., SW_HIDE)' before reparenting and subsequent style change incl. visibility renders the Window-Icon visible.