| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
| |
setMaximized(..) isReconfigureMaskSupported(..) was using the state bit-number
instead of the state bit-mask!
Fixed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
|
|
|
| |
Pixel-Scale in GLEventListener.init(...)
|
|
|
|
| |
platforms, i.e. OSX)
|
|
|
|
| |
by API doc.
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
getSupportedStateMask()
- Skip operation if not supported
- Fix skip operation if isFullscreen() && !isNativeValid():
We have to store the state w/o action,
so the state can be picked up at native creation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(X11, Windows)
The regression was caused by WindowImpl changes:
(1) Not ignoring maximizedChanged(..) during fullscreen.
X11 windows may promote maximized state, which will be passed
in reconfigure -> non-fullscreen and hinders reseting the original size.
(2) getReconfigureMask(..) was wrongly translated to state-mask,
i.e. special handling of STATE_MASK_UNDECORATED and STATE_MASK_CHILDWIN
was removed.
- Issues above were corrected
- Replace PSTATE_MASK_FULLSCREEN_NFS* w/ own stateMaskNFS for simplification
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[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
+++
|
|\ |
|
| |
| |
| |
| | |
Signed-off-by: Xerxes Rånby <[email protected]>
|
| |
| |
| |
| | |
Signed-off-by: Xerxes Rånby <[email protected]>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Fix STATE_MASK_CREATENATIVE
- Simplify resetStateMask()
- Windows WindowDriver: Remove STATE_MASK_STICKY from supported states
- TestGearsNEWT: Use NEWTDemoListener
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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)
|
|/
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|\ |
|
| |
| |
| |
| | |
empty data
|
|/ |
|
|
|
|
|
|
|
| |
- 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
rely solely on insetsChanged(..) (event driven)
Only affected WindowDriver is AWT, which now updates the insets when setVisible(true).
|
|
|
|
|
|
| |
If not waiting for resize on main-thread,
corruption may happen at continued rendering.
This has been experienced w/ maximize-horizontally (Bug 1188).
|
|
|
|
| |
reconfig DEBUG
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug 1178 cc10: We no longer throw an ExceptionInInitializerError
when X11 is not available.
Fix 1178 cc10: We need to use an X11 resource in the constructor
in order to throw an ExceptionInInitializerError if X11 is not available.
We can resolve this by query for the X11 display and screen inside the constructor.
Signed-off-by: Xerxes Rånby <[email protected]>
|
| |
| |
| |
| | |
states, dump current and new states upfront.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
child windows / Fix [Un}Resizable style
- Fix regression on OSX setVisible: in-visibility never reached on child windows
- Fix 'typo' while porting to bit-mask, i.e. '!=' -> '=='.
- Fix [Un}Resizable style
- Use NSResizableWindowMask only for !Undecorated and if STATE_MASK_RESIZABLE is set.
|
| | |
|
|/
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to return 'int[]'
Certain native RandR13 functions shall return 'int[]',
but will bail out early in case of an error or lack of resources.
The latter is true for getMonitorDeviceIds(..)
where 'XRRScreenResources->ncrtc <= 0', causing return value NULL.
This patch handles the NULL return values,
however, the root cause of having 'XRRScreenResources->ncrtc <= 0'
_occasionally_ lies within the Raspi X11 driver I am afraid?!
|
| |
|
|
|
|
| |
booleans)
|
|
|
|
| |
047e9adaf2a5f51f7acfa194a744c99b6bfadaea)
|
| |
|