Мой JOGL падает, если я не использую внешний монитор - PullRequest
0 голосов
/ 21 октября 2010

Это кажется безумным, но я смог воспроизвести проблему, из-за которой мое приложение JOGL падает, если я не использую внешний монитор.Все, что я делаю, это запускаю приложение, и оно сразу перестает отвечать на запросы.Если я подключаю внешний монитор, проблема исчезает.

Если я запускаю приложение, а затем произвольно приостанавливаю его в отладчике, я получаю следующий стек:

GraphicsApp at localhost:3173 (Suspended)   
    Daemon System Thread [Attach Listener] (Suspended)  
    Daemon System Thread [Signal Dispatcher] (Suspended)    
    Daemon System Thread [Finalizer] (Suspended)    
        Object.wait(long) line: not available [native method]   
        ReferenceQueue<T>.remove(long) line: not available  
        ReferenceQueue<T>.remove() line: not available  
        Finalizer$FinalizerThread.run() line: not available 
    Daemon System Thread [Reference Handler] (Suspended)    
        Object.wait(long) line: not available [native method]   
        Reference$Lock(Object).wait() line: 485 
        Reference$ReferenceHandler.run() line: not available    
    Daemon System Thread [Java2D Disposer] (Suspended)  
        Object.wait(long) line: not available [native method]   
        ReferenceQueue<T>.remove(long) line: not available  
        ReferenceQueue<T>.remove() line: not available  
        Disposer.run() line: not available  
        Thread.run() line: not available    
    Daemon Thread [AWT-Windows] (Suspended) 
        WToolkit.eventLoop() line: not available [native method]    
        WToolkit.run() line: not available  
        Thread.run() line: not available    
    Thread [AWT-Shutdown] (Suspended)   
        Object.wait(long) line: not available [native method]   
        Object.wait() line: 485 
        AWTAutoShutdown.run() line: not available   
        Thread.run() line: not available    
    Thread [AWT-EventQueue-0] (Suspended)   
        WGLExtImpl.dispatch_wglMakeContextCurrent1(long, long, long, long) line: not available [native method]  
        WGLExtImpl.wglMakeContextCurrent(long, long, long) line: 658    
        WindowsOnscreenWGLContext(WindowsWGLContext).wglMakeContextCurrent(long, long, long) line: 104  
        WindowsOnscreenWGLContext(WindowsWGLContext).releaseImpl() line: 315    
        WindowsOnscreenWGLContext(GLContextImpl).release() line: 151    
        GLDrawableHelper.invokeGL(GLDrawable, GLContext, Runnable, Runnable) line: 291  
        GLCanvas$DisplayOnEventDispatchThreadAction.run() line: 674 
        InvocationEvent.dispatch() line: not available  
        EventQueue.dispatchEvent(AWTEvent) line: not available  
        EventDispatchThread.pumpOneEventForFilters(int) line: not available 
        EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: not available  
        EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: not available 
        EventDispatchThread.pumpEvents(int, Conditional) line: not available    
        EventDispatchThread.pumpEvents(Conditional) line: not available 
        EventDispatchThread.run() line: not available   
    Daemon System Thread [D3D Screen Updater] (Suspended)   
        Object.wait(long) line: not available [native method]   
        D3DScreenUpdateManager.run() line: not available    
        Thread.run() line: not available    
    Thread [DestroyJavaVM] (Suspended)  
    Thread [Timer-0] (Suspended)    
        Object.wait(long) line: not available [native method]   
        EventQueue$1AWTInvocationLock(Object).wait() line: 485  
        EventQueue.invokeAndWait(Runnable) line: not available  
        AWTThreadingPlugin.invokeOnOpenGLThread(Runnable) line: 99  
        ThreadingImpl.invokeOnOpenGLThread(Runnable) line: 192  
        Threading.invokeOnOpenGLThread(Runnable) line: 164  
        GLCanvas.maybeDoSingleThreadedWorkaround(Runnable, Runnable) line: 591  
        GLCanvas.display() line: 301    
        AnimatorImpl.display(Animator, boolean, boolean) line: 50   
        FPSAnimator(Animator).display() line: 154   
        FPSAnimator$1.run() line: 95    
        TimerThread.mainLoop() line: not available  
        TimerThread.run() line: not available [local variables unavailable] 

IЯ не проверял, могу ли я воспроизвести эту проблему, просто используя OpenGL.

Я что-то не так делаю?Возможно, я запутался в проблеме с монитором, и это что-то еще?

Ответы [ 3 ]

0 голосов
/ 22 октября 2010

Вы используете -Djava.awt.headless = true?

0 голосов
/ 28 октября 2010

Вы используете интегрированный графический чипсет Intel? Я видел некоторые проблемы с ними для поддержки нескольких или внешних мониторов с JOGL. Вы можете попробовать другой компьютер с другой видеокартой, чтобы увидеть, изменится ли поведение - если это так, возможно, ваш текущий графический драйвер неисправен.

0 голосов
/ 21 октября 2010

Любой шанс, что вы где-то установили VSyncEnabled (true) или gl.setSwapInterval ()?Ищите «Вертикальный откат» здесь , если хотите узнать больше.

...