RAII Timer Suspend wrapper
This commit is contained in:
parent
7abfe85498
commit
4fa564c03b
@ -87,6 +87,7 @@ public:
|
|||||||
, rapid(100)
|
, rapid(100)
|
||||||
, super_rapid(40)
|
, super_rapid(40)
|
||||||
, fps(40)
|
, fps(40)
|
||||||
|
, _suspend_counter(0)
|
||||||
{
|
{
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
second.connect (sigc::mem_fun (*this, &UITimers::on_second_timer));
|
second.connect (sigc::mem_fun (*this, &UITimers::on_second_timer));
|
||||||
@ -99,6 +100,8 @@ public:
|
|||||||
StandardTimer super_rapid;
|
StandardTimer super_rapid;
|
||||||
StandardTimer fps;
|
StandardTimer fps;
|
||||||
|
|
||||||
|
gint _suspend_counter;
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
std::vector<uint64_t> rapid_eps_count;
|
std::vector<uint64_t> rapid_eps_count;
|
||||||
std::vector<uint64_t> super_rapid_eps_count;
|
std::vector<uint64_t> super_rapid_eps_count;
|
||||||
@ -207,4 +210,22 @@ fps_connect(const sigc::slot<void>& slot)
|
|||||||
return get_timers().fps.connect (slot);
|
return get_timers().fps.connect (slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TimerSuspender::TimerSuspender ()
|
||||||
|
{
|
||||||
|
if (g_atomic_int_add(&get_timers()._suspend_counter, 1) == 0) {
|
||||||
|
get_timers().rapid.suspend();
|
||||||
|
get_timers().super_rapid.suspend();
|
||||||
|
get_timers().fps.suspend();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TimerSuspender::~TimerSuspender ()
|
||||||
|
{
|
||||||
|
if (g_atomic_int_dec_and_test (&get_timers()._suspend_counter)) {
|
||||||
|
get_timers().rapid.resume();
|
||||||
|
get_timers().super_rapid.resume();
|
||||||
|
get_timers().fps.resume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Timers
|
} // namespace Timers
|
||||||
|
@ -37,6 +37,12 @@ void set_fps_interval(unsigned int interval);
|
|||||||
|
|
||||||
sigc::connection fps_connect(const sigc::slot<void>& slot);
|
sigc::connection fps_connect(const sigc::slot<void>& slot);
|
||||||
|
|
||||||
|
class TimerSuspender {
|
||||||
|
public:
|
||||||
|
TimerSuspender ();
|
||||||
|
~TimerSuspender ();
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TIMERS_H
|
#endif // TIMERS_H
|
||||||
|
Loading…
Reference in New Issue
Block a user