@Override public void display(GLAutoDrawable glad) { if (!created.get() && renderer != null){ listener.destroy(); logger.fine("Canvas destroyed."); super.internalDestroy(); return; } int newWidth = Math.max(canvas.getWidth(), 1); int newHeight = Math.max(canvas.getHeight(), 1); if (width != newWidth || height != newHeight) { width = newWidth; height = newHeight; if (listener != null) { listener.reshape(width, height); } } boolean flush = autoFlush.get(); if (flush && !wasAnimating){ animator.start(); wasAnimating = true; }else if (!flush && wasAnimating){ animator.stop(); wasAnimating = false; } listener.update(); renderer.postFrame(); }
private void initInThread(){ listener.initialize(); }
public void handleError(String errorMsg, Throwable t) { listener.handleError(errorMsg, t); }
if (created.get()) { logger.fine("GL Surface is setup, initializing application"); listener.initialize(); renderable.set(true); listener.update(); if (autoFlush) { renderer.postFrame();
listener.destroy(); animator.stop(); if (settings.isFullscreen()) { listener.requestClose(false); windowCloseRequest.set(false); listener.gainFocus(); wasActive = true; }else{ listener.loseFocus(); wasActive = false; listener.update(); renderer.postFrame();
throw new IllegalStateException(); listener.update(); listener.handleError("Error while swapping buffers", ex);
private void destroyInThread(){ listener.destroy(); }
listener.handleError("Failed to create display", ex); return false; // if we failed to create display, do not continue listener.initialize(); return true;
public void run(){ initInThread(); do { listener.update(); if (frameRate > 0) { sync(frameRate); } } while (!needClose.get()); deinitInThread(); logger.fine("NullContext destroyed."); }
logger.log(Level.FINE, "OGL: Creating display .."); restoreCanvas(); listener.gainFocus(); desiredTask = TASK_NOTHING; break; case TASK_DESTROY_DISPLAY: logger.log(Level.FINE, "OGL: Destroying display .."); listener.loseFocus(); pauseCanvas(); break; height = newHeight; if (listener != null){ listener.reshape(width, height);
if (renderable.get()){ if (Display.isCloseRequested()) listener.requestClose(false); listener.gainFocus(); timer.reset(); wasActive = true; } else { listener.loseFocus(); wasActive = false;
/** * Callback. */ public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { listener.reshape(width, height); }
@Override public void run() { if (listener == null) { throw new IllegalStateException("SystemListener is not set on context!" + "Must set with JmeContext.setSystemListener()."); } LOGGER.log(Level.FINE, "Using LWJGL {0}", Version.getVersion()); if (!initInThread()) { LOGGER.log(Level.SEVERE, "Display initialization failed. Cannot continue."); return; } while (true) { runLoop(); if (needClose.get()) { break; } if (glfwWindowShouldClose(window) == true) { listener.requestClose(false); } } deinitInThread(); }
listener.destroy(); animator.stop(); if (settings.isFullscreen()) { listener.requestClose(false); windowCloseRequest.set(false); listener.gainFocus(); wasActive = true; }else{ listener.loseFocus(); wasActive = false; listener.update(); renderer.postFrame();
protected void runLoop(){ if (!created.get()) { throw new IllegalStateException(); } if (pbuffer.isBufferLost()) { pbuffer.destroy(); try { pbuffer = new Pbuffer(width, height, pixelFormat, null); pbuffer.makeCurrent(); // Context MUST be reset here to avoid invalid objects! renderer.invalidateState(); } catch (LWJGLException ex) { listener.handleError("Failed to restore pbuffer content", ex); } } listener.update(); assert checkGLError(); renderer.postFrame(); // Need to flush GL commands // to see any result on the pbuffer's front buffer. GL11.glFlush(); int frameRate = settings.getFrameRate(); if (frameRate >= 1) { Display.sync(frameRate); } }
@Override public void destroy(boolean waitFor) { logger.log(Level.FINE, "IGLESContext destroy"); listener.destroy(); needClose.set(true); if (waitFor) { //waitFor(false); } }
listener.handleError("Uncaught exception thrown in " + thread.toString(), thrown); if (needClose.get()) { listener.handleError("Failed to create display", ex); return false; // if we failed to create display, do not continue listener.initialize(); return true;
protected void runLoop(){ if (!created.get()) { throw new IllegalStateException(); } listener.update(); checkGLError(); renderer.postFrame(); int frameRate = settings.getFrameRate(); if (frameRate >= 1) { //FIXME } }
logger.log(Level.FINE, "OGL: Creating display .."); restoreCanvas(); listener.gainFocus(); desiredTask = TASK_NOTHING; break; case TASK_DESTROY_DISPLAY: logger.log(Level.FINE, "OGL: Destroying display .."); listener.loseFocus(); pauseCanvas(); break; height = newHeight; if (listener != null){ listener.reshape(width, height);