[gnome-clocks] Use tick_callback instead of plain timeout.



commit 53b42f8ab4596180a7b26bfffc7f6dd69a94d191
Author: Paolo Borelli <pborelli gnome org>
Date:   Thu Aug 15 11:06:25 2013 +0200

    Use tick_callback instead of plain timeout.
    
    Use gtk smart paint clock to reduce the times we redraw

 src/stopwatch.vala |   30 ++++++++++++++++--------------
 src/timer.vala     |   32 +++++++++++++++++---------------
 2 files changed, 33 insertions(+), 29 deletions(-)
---
diff --git a/src/stopwatch.vala b/src/stopwatch.vala
index 0bb6dc8..417383a 100644
--- a/src/stopwatch.vala
+++ b/src/stopwatch.vala
@@ -38,7 +38,7 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
 
     private State state;
     private GLib.Timer timer;
-    private uint timeout_id;
+    private uint tick_id;
     private int current_lap;
     private double last_lap_time;
     private Gtk.Label time_label;
@@ -51,7 +51,7 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
         Object (label: _("Stopwatch"), header_bar: header_bar, panel_id: PanelId.STOPWATCH);
 
         timer = new GLib.Timer ();
-        timeout_id = 0;
+        tick_id = 0;
 
         var builder = Utils.load_ui ("stopwatch.ui");
 
@@ -68,13 +68,13 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
         map.connect ((w) => {
             if (state == State.RUNNING) {
                 update_time_label ();
-                add_timeout ();
+                add_tick ();
             }
         });
 
         unmap.connect ((w) => {
             if (state == State.RUNNING) {
-                remove_timeout ();
+                remove_tick ();
             }
         });
 
@@ -118,7 +118,7 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
             timer.continue ();
         }
         state = State.RUNNING;
-        add_timeout ();
+        add_tick ();
         left_button.set_label (_("Stop"));
         left_button.get_style_context ().add_class ("clocks-stop");
         right_button.set_sensitive (true);
@@ -128,7 +128,7 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
     private void stop () {
         timer.stop ();
         state = State.STOPPED;
-        remove_timeout ();
+        remove_tick ();
         left_button.set_label (_("Continue"));
         left_button.get_style_context ().remove_class ("clocks-stop");
         left_button.get_style_context ().add_class ("clocks-go");
@@ -139,7 +139,7 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
     private void reset () {
         timer.reset ();
         state = State.RESET;
-        remove_timeout ();
+        remove_tick ();
         update_time_label ();
         left_button.set_label (_("Start"));
         left_button.get_style_context ().add_class ("clocks-go");
@@ -197,16 +197,18 @@ public class MainPanel : Gtk.Box, Clocks.Clock {
         laps_view.scroll_to_cell (p, null, false, 0, 0);
     }
 
-    private void add_timeout () {
-        if (timeout_id == 0) {
-            timeout_id = Timeout.add (100, update_time_label);
+    private void add_tick () {
+        if (tick_id == 0) {
+            tick_id = add_tick_callback ((c) => {
+                return update_time_label ();
+            });
         }
     }
 
-    private void remove_timeout () {
-        if (timeout_id != 0) {
-            Source.remove (timeout_id);
-            timeout_id = 0;
+    private void remove_tick () {
+        if (tick_id != 0) {
+            remove_tick_callback (tick_id);
+            tick_id = 0;
         }
     }
 
diff --git a/src/timer.vala b/src/timer.vala
index 2a85082..4a3b9ed 100644
--- a/src/timer.vala
+++ b/src/timer.vala
@@ -32,7 +32,7 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
 
     private State state;
     private GLib.Settings settings;
-    private uint timeout_id;
+    private uint tick_id;
     private Utils.Bell bell;
     private Gtk.Widget setup_panel;
     private Gtk.Grid grid_spinbuttons;
@@ -54,7 +54,7 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
 
         bell = new Utils.Bell ("complete", _("Time is up!"), _("Timer countdown finished"));
 
-        timeout_id = 0;
+        tick_id = 0;
         span = 0;
         timer = new GLib.Timer ();
 
@@ -144,7 +144,7 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
     private void reset () {
         state = State.STOPPED;
         timer.reset ();
-        remove_timeout ();
+        remove_tick ();
         span = settings.get_uint ("timer");
         h_spinbutton.value = (int) span / 3600;
         m_spinbutton.value = (int) span / 60;
@@ -154,7 +154,7 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
     }
 
     private void start () {
-        if (state == State.STOPPED && timeout_id == 0) {
+        if (state == State.STOPPED && tick_id == 0) {
             var h = h_spinbutton.get_value_as_int ();
             var m = m_spinbutton.get_value_as_int ();
             var s = s_spinbutton.get_value_as_int ();
@@ -168,33 +168,35 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
             visible_child = countdown_panel;
 
             update_countdown_label (h, m, s);
-            add_timeout ();
+            add_tick ();
         }
     }
 
     private void restart () {
         state = State.RUNNING;
         timer.start ();
-        add_timeout ();
+        add_tick ();
     }
 
     private void pause () {
         state = State.PAUSED;
         timer.stop ();
         span -= timer.elapsed ();
-        remove_timeout ();
+        remove_tick ();
     }
 
-    private void add_timeout () {
-        if (timeout_id == 0) {
-            timeout_id = Timeout.add (100, count);
+    private void add_tick () {
+        if (tick_id == 0) {
+            tick_id = add_tick_callback ((c) => {
+                return count ();
+            });
         }
     }
 
-    private void remove_timeout () {
-        if (timeout_id != 0) {
-            Source.remove (timeout_id);
-            timeout_id = 0;
+    private void remove_tick () {
+        if (tick_id != 0) {
+            remove_tick_callback (tick_id);
+            tick_id = 0;
         }
     }
 
@@ -203,7 +205,7 @@ public class MainPanel : Gtk.Stack, Clocks.Clock {
         if (e >= span) {
             ring ();
             state = State.STOPPED;
-            remove_timeout ();
+            remove_tick ();
             update_countdown_label (0, 0, 0);
             visible_child = setup_panel;
             return false;


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