Hi Guys,
Just to say that I've noticed some strange behaviour in JOGL with 2.3.1 and 2.3.2 with El Capitan having installed it over the weekend. What I'm about to describe does not happen with older versions of JOGL from about 12 months ago (not sure of the exact versions). Essentially placing a couple GLCanvas's in any kind of toggle container (TabPane/CardLayout/etc..) causes one to always show up over the top of the other and when resizing the container neither window resizes. I've tried making a few simple test examples with a single GLCanvas and it shows the same incorrect resize behaviour. However if the GLCanvas is the root item in the frame then it appears to work ok.. The Java output window spews out the following: Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: conn 0x18543 token 0xfffffffffff428 Oct 19 11:01:02 java[4781] <Warning>: Backtrace (at 8153.17): Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 0 CoreGraphics 0x00007fff9865e0b4 CGSDisableUpdateToken + 155 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 1 AppKit 0x00007fff8cacc4c3 ___disable_updates_sync_block_invoke_2 + 17 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 2 libdispatch.dylib 0x00007fff8d816453 _dispatch_client_callout + 8 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 3 libdispatch.dylib 0x00007fff8d817a3a _dispatch_barrier_sync_f_invoke + 74 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 4 AppKit 0x00007fff8cacc391 NSCGSDisableUpdates + 1162 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 5 AppKit 0x00007fff8cacbe12 NSCGSTransactionRunPreCommitActionsForOrder_ + 156 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 6 AppKit 0x00007fff8cacbd59 NSCGSTransactionRunPreCommitActions_ + 21 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 7 AppKit 0x00007fff8d2746de -[_NSCGSTransaction synchronize] + 42 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 8 AppKit 0x00007fff8d274851 NSCGSTransactionSynchronize + 76 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 9 AppKit 0x00007fff8d060a19 -[NSSurface syncSurfaceWantsExtendedDynamicRange] + 150 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 10 AppKit 0x00007fff8cb9ed59 -[NSSurface _createSurface] + 677 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 11 AppKit 0x00007fff8cb9e6b4 -[NSSurface setFrame:] + 785 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 12 AppKit 0x00007fff8cb9dfbe -[NSSurface syncToViewUnconditionally] + 174 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 13 AppKit 0x00007fff8cb9dc6c -[NSSurface orderSurface:relativeTo:] + 101 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 14 AppKit 0x00007fff8cc91d0a NSOpenGLContextAttachOnScreenViewSurface + 183 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 15 AppKit 0x00007fff8cfb877b __27-[NSOpenGLContext setView:]_block_invoke + 192 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 16 AppKit 0x00007fff8cabb0a9 NSPerformVisuallyAtomicChange + 147 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 17 AppKit 0x00007fff8cc7ead1 -[NSOpenGLContext setView:] + 119 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 18 libjogl_desktop.jnilib 0x000000012d6e5dc0 createContext + 400 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 19 libjogl_desktop.jnilib 0x000000012d74bab5 Java_jogamp_opengl_macosx_cgl_CGL_createContext0__JJZJZLjava_lang_Object_2I + 149 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 20 ??? 0x000000010bf9ead4 0x0 + 4495895252 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 21 ??? 0x000000010bf90760 0x0 + 4495837024 Oct 19 11:01:02 java[4781] <Warning>: void CGSUpdateManager::log() const: 22 ??? 0x000000010bf90760 0x0 + 4495837024 I'm presuming Apple have changed something again in the newest release of OSX that's upsetting things.. I've tried different Java versions and it doesn't make any difference.. Many Thanks Mark |
Administrator
|
Hi
Please make a real bug report: http://jogamp.org/wiki/index.php/Jogl_FAQ#Bugreports_.26_Testing Be more accurate, provide more information and a test case or use an existing unit test. If it's a regression, indicate precisely which version was working.
Julien Gouesse | Personal blog | Website
|
Hi Julien,
As soon as I get chance to put something together I will.. just thought I'd post this as a "heads up"... or in case I'd missed something obvious! Many Thanks Mark |
Hi Julien,
I've managed to fix/work around this issue.. but now I'm not sure whether it's a bug or a mistake in my coding. However it does only effect El Capitan so that might be a clue! Essentially I had the code that finalised the layout of my panels and set them visible in a SwingUtilities.invokeLater() block. If I take them out of the block everything behaves correctly (although I do get that random text output still in the original message). As soon as I put the calls back into the "invokeLater" thread then the second GLCanvas goes all screwy and essentially draws all over the top of the first GLCanvas. As there may be a big "warning don't do this" message in some of the JOGL documentation somewhere then I won't raise this as a bug just yet... Many Thanks Mark |
Administrator
|
Hi
Actually, putting some UI code into SwingUtilities.invokeLater() is a good idea. There is probably a bug in AWT under OS X. Which JVM do you use? Please can you indicate more precisely what you mean by "the code that finalised the layout of my panels and set them visible". In my humble opinion, it would be safer for us that you provide a tiny piece of code to reproduce your bug.
Julien Gouesse | Personal blog | Website
|
Hi Julien,
I did make a simple little demo whilst I was tracking down the problem. In fact I made two that I thought were identical and one showed the problem and one did not.. which had me stumped for a while. The demo was just two GLCanvas's in separate Tab panes. If I remember correctly if I just put the JFrame.setVisible(true) in the invokeLater section it broke.. removed the invokeLater and it displayed correctly. I'll dig the code out from my machine when I'm back in the office.. but it really was that simple. The JVM is the latest Oracle release (and also tested on some older Oracle 1.8 releases). Many Thanks Mark |
Free forum by Nabble | Edit this page |