From 59d097bcead9b349e20a4ec193d76330e6899e53 Mon Sep 17 00:00:00 2001
From: Mathias Gumz <akira at fluxbox dot org>
Date: Fri, 14 Sep 2012 08:48:37 +0200
Subject: Fix bug: (re)setting timeouts on a running FbTk::Timer might lead to
 broken timer list

Setting a new timeout on a running FbTk::Timer must remove it from the timerlist,
otherwise the list is not ordered correctly anymore. So, we stop the running
FbTk::Timer, set the new timeout and restart it.
---
 src/FbTk/Timer.cc | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/FbTk/Timer.cc b/src/FbTk/Timer.cc
index 6a478bd..38f1a32 100644
--- a/src/FbTk/Timer.cc
+++ b/src/FbTk/Timer.cc
@@ -112,7 +112,16 @@ Timer::~Timer() {
 
 
 void Timer::setTimeout(uint64_t timeout) {
+
+    bool was_timing = isTiming();
+    if (was_timing) {
+        stop();
+    }
     m_timeout = timeout;
+
+    if (was_timing) {
+        start();
+    }
 }
 
 void Timer::setCommand(const RefCount<Slot<void> > &cmd) {
-- 
cgit v0.11.2