r2847 - branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks
Author: echatellier Date: 2012-03-27 22:54:44 +0200 (Tue, 27 Mar 2012) New Revision: 2847 Url: http://chorem.org/repositories/revision/jtimer/2847 Log: Fix continue option Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-27 19:25:50 UTC (rev 2846) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-27 20:54:44 UTC (rev 2847) @@ -178,7 +178,6 @@ // get idle time long configIdleTime = JTimer.config.getIdleTime() * 1000; - long idleTime = 0; boolean dontWantToStop = true; while (dontWantToStop) { @@ -187,7 +186,16 @@ // that ensure hibernate won't break time tracking long oldUserActivity = lastUserActivity.getAndSet(System.currentTimeMillis()); + // check for idleness with last user activity (real idle and hibernate) + long delta = lastUserActivity.get() - oldUserActivity; + + // time have to be published, even if idle is detected + // because time adjustment will remove more time than published + // one if done after + addTaskDelta(lastUserActivity.get(), delta); + // check user idle time + long idleTime = 0; if (systemInfo != null) { // idle time available idleTime = systemInfo.getIdleTime(); @@ -196,14 +204,6 @@ } } - // check for idleness with last user activity (real idle and hibernate) - long delta = lastUserActivity.get() - oldUserActivity; - - // time have to be published, even if idle is detected - // because time adjustment will remove more time than published - // one if done after - addTaskDelta(lastUserActivity.get(), delta); - if (delta >= configIdleTime || idleTime >= configIdleTime) { long userIdleTime = Math.max(delta, idleTime); @@ -217,6 +217,12 @@ int option = IdleDialog.showIdleDialog(lastUserActivity.get() - userIdleTime); parentApplication.postIdleDetect(); + // restart timing from current time after idle + // mandadory call, otherwise, next iteration will display idle + // dialog again + oldUserActivity = lastUserActivity.getAndSet(System.currentTimeMillis()); + delta = lastUserActivity.get() - oldUserActivity; + switch (option) { case IdleDialog.REVERT: // just stop the task @@ -225,13 +231,9 @@ case IdleDialog.CONTINUE: // readd delta since oldUserActivity - addTaskDelta(lastUserActivity.get() - userIdleTime, userIdleTime); + addTaskDelta(lastUserActivity.get() - userIdleTime, delta + userIdleTime); break; - } - - // need to fix last user activity - lastUserActivity.set(System.currentTimeMillis()); } Thread.sleep(1000); // 1s
participants (1)
-
echatellier@users.chorem.org