From: Hendrik B. <nh...@us...> - 2010-03-04 21:06:48
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client/gui In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9455/src/games/stendhal/client/gui Modified Files: Tag: VERSION_00_RELEASE_81_REVISION_02 j2DClient.java Log Message: backported try-catch blocks Index: j2DClient.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2DClient.java,v retrieving revision 1.309.2.1.2.1 retrieving revision 1.309.2.1.2.1.2.1 diff -C2 -d -r1.309.2.1.2.1 -r1.309.2.1.2.1.2.1 *** j2DClient.java 2 Mar 2010 20:02:16 -0000 1.309.2.1.2.1 --- j2DClient.java 4 Mar 2010 21:06:39 -0000 1.309.2.1.2.1.2.1 *************** *** 477,615 **** boolean canExit = false; while (!canExit) { ! fps++; ! // figure out what time it is right after the screen flip then ! // later we can figure out how long we have been doing redrawing ! // / networking, then we know how long we need to sleep to make ! // the next flip happen at the right time ! ! screen.nextFrame(); ! final long now = System.currentTimeMillis(); ! final int delta = (int) (now - refreshTime); ! refreshTime = now; ! ! logger.debug("Move objects"); ! gameObjects.update(delta); ! if (!client.isInBatchUpdate() && gameLayers.changedArea()) { /* ! * Update the screen */ ! screen.setMaxWorldSize(gameLayers.getWidth(), ! gameLayers.getHeight()); ! screen.center(); ! ! // [Re]create the map ! final CollisionDetection cd = gameLayers.getCollisionDetection(); ! final CollisionDetection pd = gameLayers.getProtectionDetection(); ! ! if (cd != null) { ! minimap.update(cd, pd, ! screen.getComponent().getGraphicsConfiguration(), ! gameLayers.getArea()); ! } ! gameLayers.resetChangedArea(); ! } ! ! final User user = User.get(); ! ! if (user != null) { ! // check if the player object has changed. ! // Note: this is an exact object reference check ! if (user != lastuser) { ! character.setPlayer(user); ! keyring.setSlot(user, "keyring", gameScreen); ! inventory.setSlot(user, "bag", gameScreen); ! ! lastuser = user; ! } ! } ! ! if (!client.isInBatchUpdate()) { ! if (mainFrame.getMainFrame().getState() != Frame.ICONIFIED) { ! logger.debug("Draw screen"); ! screen.draw(); ! minimap.refresh(); } ! } ! ! logger.debug("Query network"); ! ! if (client.loop(0)) { ! lastMessageHandle = refreshTime; ! } ! ! /* ! * Process delayed direction release ! */ ! if ((directionRelease != null) && directionRelease.hasExpired()) { ! client.removeDirection(directionRelease.getDirection(), ! directionRelease.isFacing()); ! ! directionRelease = null; ! } ! ! if (logger.isDebugEnabled()) { ! if ((refreshTime - lastFpsTime) >= 1000L) { ! logger.debug("FPS: " + fps); ! final long freeMemory = Runtime.getRuntime().freeMemory() / 1024; ! final long totalMemory = Runtime.getRuntime().totalMemory() / 1024; ! ! logger.debug("Total/Used memory: " + totalMemory + "/" ! + (totalMemory - freeMemory)); ! ! fps = 0; ! lastFpsTime = refreshTime; } ! } ! ! // Shows a offline icon if no messages are received in 120 seconds. ! if ((refreshTime - lastMessageHandle > 120000L) ! || !client.getConnectionState()) { ! setOffline(true); ! } else { ! setOffline(false); ! } ! ! logger.debug("Start sleeping"); ! // we know how long we want per screen refresh (40ms) then ! // we add the refresh time and subtract the current time ! // leaving us with the amount we still need to sleep. ! long wait = frameLength + refreshTime - System.currentTimeMillis(); ! ! if (wait > 0) { ! if (wait > 100L) { ! logger.info("Waiting " + wait + " ms"); ! wait = 100L; } ! ! try { ! Thread.sleep(wait); ! } catch (final InterruptedException e) { } ! } ! ! logger.debug("End sleeping"); ! ! if (!gameRunning) { ! logger.info("Request logout"); ! try { ! /* ! * We request server permision to logout. Server can deny ! * it. ! */ ! if (client.logout()) { canExit = true; ! } else { ! logger.warn("You can't logout now."); ! gameRunning = true; } - } catch (final Exception e) { - /* - * If we get a timeout exception we accept exit request. - */ - canExit = true; - logger.error(e, e); } } } --- 477,619 ---- boolean canExit = false; while (!canExit) { ! try { ! fps++; ! // figure out what time it is right after the screen flip then ! // later we can figure out how long we have been doing redrawing ! // / networking, then we know how long we need to sleep to make ! // the next flip happen at the right time ! screen.nextFrame(); ! final long now = System.currentTimeMillis(); ! final int delta = (int) (now - refreshTime); ! refreshTime = now; ! ! logger.debug("Move objects"); ! gameObjects.update(delta); ! ! if (!client.isInBatchUpdate() && gameLayers.changedArea()) { ! /* ! * Update the screen ! */ ! screen.setMaxWorldSize(gameLayers.getWidth(), ! gameLayers.getHeight()); ! screen.center(); ! ! // [Re]create the map ! ! final CollisionDetection cd = gameLayers.getCollisionDetection(); ! final CollisionDetection pd = gameLayers.getProtectionDetection(); ! ! if (cd != null) { ! minimap.update(cd, pd, ! screen.getComponent().getGraphicsConfiguration(), ! gameLayers.getArea()); ! } ! gameLayers.resetChangedArea(); ! } ! ! final User user = User.get(); ! ! if (user != null) { ! // check if the player object has changed. ! // Note: this is an exact object reference check ! if (user != lastuser) { ! character.setPlayer(user); ! keyring.setSlot(user, "keyring", gameScreen); ! inventory.setSlot(user, "bag", gameScreen); ! ! lastuser = user; ! } ! } ! ! if (!client.isInBatchUpdate()) { ! if (mainFrame.getMainFrame().getState() != Frame.ICONIFIED) { ! logger.debug("Draw screen"); ! screen.draw(); ! minimap.refresh(); ! } ! } ! ! logger.debug("Query network"); ! ! if (client.loop(0)) { ! lastMessageHandle = refreshTime; ! } ! /* ! * Process delayed direction release */ ! if ((directionRelease != null) && directionRelease.hasExpired()) { ! client.removeDirection(directionRelease.getDirection(), ! directionRelease.isFacing()); ! directionRelease = null; } ! ! if (logger.isDebugEnabled()) { ! if ((refreshTime - lastFpsTime) >= 1000L) { ! logger.debug("FPS: " + fps); ! final long freeMemory = Runtime.getRuntime().freeMemory() / 1024; ! final long totalMemory = Runtime.getRuntime().totalMemory() / 1024; ! ! logger.debug("Total/Used memory: " + totalMemory + "/" ! + (totalMemory - freeMemory)); ! ! fps = 0; ! lastFpsTime = refreshTime; ! } } ! ! // Shows a offline icon if no messages are received in 120 seconds. ! if ((refreshTime - lastMessageHandle > 120000L) ! || !client.getConnectionState()) { ! setOffline(true); ! } else { ! setOffline(false); } ! ! logger.debug("Start sleeping"); ! // we know how long we want per screen refresh (40ms) then ! // we add the refresh time and subtract the current time ! // leaving us with the amount we still need to sleep. ! long wait = frameLength + refreshTime - System.currentTimeMillis(); ! ! if (wait > 0) { ! if (wait > 100L) { ! logger.info("Waiting " + wait + " ms"); ! wait = 100L; ! } ! ! try { ! Thread.sleep(wait); ! } catch (final InterruptedException e) { ! } } ! ! logger.debug("End sleeping"); ! ! if (!gameRunning) { ! logger.info("Request logout"); ! try { ! /* ! * We request server permision to logout. Server can deny ! * it. ! */ ! if (client.logout()) { ! canExit = true; ! } else { ! logger.warn("You can't logout now."); ! gameRunning = true; ! } ! } catch (final Exception e) { ! /* ! * If we get a timeout exception we accept exit request. ! */ canExit = true; ! logger.error(e, e); } } + } catch (RuntimeException e) { + logger.error(e, e); } } |