From 7abfe85498080f202b19e02744df1e5352a06ce0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 30 Oct 2015 15:50:12 +0100 Subject: [PATCH] add API to suspend timers signal emission. --- libs/pbd/pbd/timer.h | 7 +++++++ libs/pbd/timer.cc | 9 +++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libs/pbd/pbd/timer.h b/libs/pbd/pbd/timer.h index 4c80d9d088..4d96eedf7f 100644 --- a/libs/pbd/pbd/timer.h +++ b/libs/pbd/pbd/timer.h @@ -46,6 +46,9 @@ public: virtual unsigned int connection_count () const = 0; + void suspend () { m_suspended = true; } + void resume () { m_suspended = false; } + protected: virtual ~Timer() { } @@ -56,6 +59,8 @@ protected: virtual bool on_elapsed () = 0; + bool suspended () const { return m_suspended; } + private: Timer(const Timer&); @@ -73,6 +78,8 @@ private: const Glib::RefPtr m_main_context; + bool m_suspended; + }; class LIBPBD_API StandardTimer : public Timer diff --git a/libs/pbd/timer.cc b/libs/pbd/timer.cc index 662c7ddc38..8312c53d14 100644 --- a/libs/pbd/timer.cc +++ b/libs/pbd/timer.cc @@ -26,6 +26,7 @@ Timer::Timer (unsigned int interval, : m_timeout_source(NULL) , m_timeout_interval(interval) , m_main_context(main_context) + , m_suspended(false) { } @@ -121,7 +122,9 @@ StandardTimer::on_elapsed() return false; } - m_signal(); + if (!suspended ()) { + m_signal(); + } return true; } @@ -149,7 +152,9 @@ BlinkTimer::on_elapsed() return false; } - m_blink_signal(blink_on = !blink_on); + if (!suspended ()) { + m_blink_signal(blink_on = !blink_on); + } return true; } -- 2.30.2