[gnome-mines] Fix timer reset on game pause (bgo#756302)



commit 1d7d7a6e3341276ad5da0f87e720a96066b83740
Author: Robert Roth <robert roth off gmail com>
Date:   Tue Oct 13 08:57:19 2015 +0300

    Fix timer reset on game pause (bgo#756302)

 src/gnome-mines.vala |    6 ++++--
 src/minefield.vala   |   16 ++++++----------
 2 files changed, 10 insertions(+), 12 deletions(-)
---
diff --git a/src/gnome-mines.vala b/src/gnome-mines.vala
index c6d5c35..f372079 100644
--- a/src/gnome-mines.vala
+++ b/src/gnome-mines.vala
@@ -591,8 +591,6 @@ public class Mines : Gtk.Application
         play_pause_button.show ();
         high_scores_button.hide ();
 
-        tick_cb ();
-
         int x, y, n;
         switch (settings.get_int (KEY_MODE))
         {
@@ -630,6 +628,7 @@ public class Mines : Gtk.Application
         minefield.clock_started.connect (clock_started_cb);
 
         minefield_view.minefield = minefield;
+
         int mine_size = int.max ((int) minefield_view.mine_size, 30);
         int request_x = -1, request_y = -1;
         if  (window.get_allocated_width () - scrolled.get_allocated_width () + 30 * x + aspect_child.spacing 
+ buttons_box.get_allocated_width () < Gdk.Screen.width ()) {
@@ -660,6 +659,9 @@ public class Mines : Gtk.Application
         pause_requested = false;
 
         stack.visible_child_name = "game";
+        pause_action.set_enabled (false);
+
+        tick_cb ();
     }
 
     private void new_game_cb ()
diff --git a/src/minefield.vala b/src/minefield.vala
index 5a7dfaf..e63f118 100644
--- a/src/minefield.vala
+++ b/src/minefield.vala
@@ -101,9 +101,7 @@ public class Minefield : Object
     {
         get
         {
-            if (clock == null)
-                return 0.0;
-            return clock_elapsed + clock.elapsed ();
+            return clock_elapsed + (clock == null ? 0.0 : clock.elapsed ());
         }
     }
 
@@ -115,13 +113,10 @@ public class Minefield : Object
             if (is_complete || exploded)
                 return;
 
-            if (clock != null)
-            {
-                if (value && !_paused)
-                    stop_clock ();
-                else if (!value && _paused)
-                    continue_clock ();
-            }
+            if (value && !_paused)
+                stop_clock ();
+            else if (!value && _paused)
+                continue_clock ();
 
             _paused = value;
             paused_changed ();
@@ -395,6 +390,7 @@ public class Minefield : Object
     {
         if (clock == null)
             return;
+        clock_elapsed += clock.elapsed ();
         if (clock_timeout != 0)
             Source.remove (clock_timeout);
         clock_timeout = 0;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]