Community
Participate
Working Groups
I'm not sure what the immediate cause of this is, but I haven't been able to get recent versions of Eclipse and the current GEF to run on Mac. This is what I'm seeing. I'm pretty sure the LWJGL renderer itself is loading. Jan 2, 2012 12:29:23 PM org.eclipse.draw3d.graphics3d.lwjgl.Graphics3DLwjgl <init> INFO: Graphics3DLwjgl constructor called 2012-01-02 12:29:23.941 java[10666:903] [Java CocoaComponent compatibility mode]: Enabled 2012-01-02 12:29:23.942 java[10666:903] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000 2012-01-02 12:29:24.318 java[10666:24603] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x100145500> '(null)') unlocked when not locked 2012-01-02 12:29:24.318 java[10666:24603] *** Break on _NSLockError() to debug.
Hmm... I'm now thinking that this might be a LWJGL library / snow leopard issue or something. Because it isn't working with my older version of AMP either.
OK, this appears to be in the LWJGL plugin itself. When I simply install the LWJGL plugin and follow the directions here: http://wiki.eclipse.org/LWJGL_Plugin I get the same issue. There seems to be a lot of traffic about this issue WRT to java libraries going back many years but it's pretty opaque to me. I'm going to post on the LWJGL forum as well.
OK, see also: http://lwjgl.org/forum/index.php/topic,4375.msg23588.html#msg23588 I hate to cross-post a bug, but I think folks should be able to see both. As I mentioned there: One odd thing is that the LWJGL Test View actually works, but the LWJGL INfo View breaks. So I'm not sure what the heck is going on here. It's frustrating because I can actually see a 3D render, but not for my stuff. ;)
OK, I have a *possible* candidate explanation. In MacOSXFrame, we have: public void resize(int x, int y, int width, int height) { Insets insets = getInsets(); setBounds(x, y, width + insets.left + insets.right, height + insets.top + insets.bottom); } Here: java.awt.Insets[top=22,left=0,bottom=0,right=0] This gives e.g. a frame size of 1920x1222 for a display of 1920x1200! This now calls Mac internals, so it's not clear if this is what is getting barfed on or not. I'd love to test this, but that would mean installing SVN.. :P
Gotcha!! I had to take the pain and install SVN... This bit is not actually causing the hang: 2012-01-02 20:16:50.667 java[30052:1f603] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x100684e30> '(null)') unlocked when not locked 2012-01-02 20:16:50.667 java[30052:1f603] *** Break on _NSLockError() to debug. This is what seems to really be blowing things up: org.lwjgl.opengl.Display public static void destroy() {...} A subsequent call buried in MacOSXFrame seems to be that actual croak. See the full stack trace below. By commenting out: LWJGLInfoView Line 120: //Display.destroy(); The info window shows up. Unfortunately, the display window also hangs around. Don't know if there is a better way to hide that or not. In my code for AMP 3D, the issue occurs when Graphics3DLwjgl#check calls destroy. Line: 418. Commenting that out gets rid of the issue but again causes the window to remain. That's something I can live with, but we'll need to figure out how to get some sort of fix into GEF3D. Oh yeah, that's right, I have GEF3D commit privileges.. <Evil Grin/> Daemon Thread [Thread-1] (Suspended) Object.wait(long) line: not available [native method] EventQueue$1AWTInvocationLock(Object).wait() line: 485 EventQueue.invokeAndWait(Runnable) line: 1073 MacOSXFrame(Window).doDispose() line: 1030 MacOSXFrame(Window).dispose() line: 973 MacOSXDisplay.destroyWindow() line: 139 Display.destroyWindow() line: 351 Display.access$400() line: 62 Display$5.destroy() line: 860 Display.destroy() line: 1111 LWJGLInfoView.gatherInformation() line: 120 LWJGLInfoView.createPartControl(Composite) line: 60 ViewReference.createPartHelper() line: 375 ViewReference.createPart() line: 229 ViewReference(WorkbenchPartReference).getPart(boolean) line: 595 Perspective.showView(String, String) line: 2245 WorkbenchPage.busyShowView(String, String, int) line: 1145 WorkbenchPage$20.run() line: 3921 BusyIndicator.showWhile(Display, Runnable) line: 70 WorkbenchPage.showView(String, String, int) line: 3918 ShowViewHandler.openView(String, String, IWorkbenchWindow) line: 162 ShowViewHandler.openOther(IWorkbenchWindow) line: 105 ShowViewHandler.execute(ExecutionEvent) line: 73 HandlerProxy.execute(ExecutionEvent) line: 293 Command.executeWithChecks(ExecutionEvent) line: 476 ParameterizedCommand.executeWithChecks(Object, Object) line: 508 HandlerService.executeCommand(ParameterizedCommand, Event) line: 169 SlaveHandlerService.executeCommand(ParameterizedCommand, Event) line: 241 ShowViewMenu$3.run() line: 187 ShowViewMenu$3(Action).runWithEvent(Event) line: 498 ActionContributionItem.handleWidgetSelection(Event, boolean) line: 584 ActionContributionItem.access$2(ActionContributionItem, Event, boolean) line: 501 ActionContributionItem$5.handleEvent(Event) line: 411 EventTable.sendEvent(Event) line: 84 Display.sendEvent(EventTable, Event) line: 4128 MenuItem(Widget).sendEvent(Event) line: 1457 MenuItem(Widget).sendEvent(int, Event, boolean) line: 1480 MenuItem(Widget).sendEvent(int, Event) line: 1465 MenuItem(Widget).notifyListeners(int, Event) line: 1270 Display.runDeferredEvents() line: 3974 Display.readAndDispatch() line: 3613 Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2696 Workbench.runUI() line: 2660 Workbench.access$4(Workbench) line: 2494 Workbench$7.run() line: 674 Realm.runWithDefault(Realm, Runnable) line: 332 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 667 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149 IDEApplication.start(IApplicationContext) line: 123 EclipseAppHandle.run(Object) line: 196 EclipseAppLauncher.runApplication(Object) line: 110 EclipseAppLauncher.start(Object) line: 79 EclipseStarter.run(Object) line: 344 EclipseStarter.run(String[], Runnable) line: 179 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 597 Main.invokeFramework(String[], URL[]) line: 622 Main.basicRun(String[]) line: 577 Main.run(String[]) line: 1410 Main.main(String[]) line: 1386
Miles, this is odd, as it works on my system (Snow Leopard as well). Which LWJGL version are you using (this info may be useful for the LWJGL guys as well...). You could try my "personal" LWJGL update site which provides the latest LWJGL 2.8.2 version (the 2.8.2 version currently provided at lwgjgl.org/update is broken): http://jevopi.de/updatesite/org.lwjgl.updatesite Which graphics card do you have? I'm not sure but, but I figure it might be a problem with some OpenGL extensions. The test view does not use any extension, but GEF3D does. And these extensions are queried when initializing the info view. Cheers, Jens
That's exactly the version I have installed, so unless there is an issue with the LWJGL build that's probably not it. I have a Radeon 3870. I'm going to chek to see if it is an issue on my (discrete graphics) MacBook Pro as well.
The bug was initially caused by closing a display, temporarily opened in order to retrieve OpenGL capabilities. Actually, it is possible to retrieve these capabilities without opening a display, which I implemented now. This fixes this bug. However, the problem may still remain in other cases, such as the LWJGL info view (I will have to fix this issue there, too).
Awesome. Will test it on AMP as soon as I get a chance.