mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-28 16:01:20 +02:00
77 lines
2.2 KiB
C++
77 lines
2.2 KiB
C++
/*
|
|
Based up Neutrino-GUI - Tuxbox-Project
|
|
Copyright (C) 2001 by Steffen Hehn 'McClean'
|
|
|
|
Classes for generic GUI-related components.
|
|
Copyright (C) 2013, Thilo Graf 'dbt'
|
|
|
|
License: GPL
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __CC_TIMER__
|
|
#define __CC_TIMER__
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <sigc++/signal.h>
|
|
#include <OpenThreads/ScopedLock>
|
|
#include <OpenThreads/Thread>
|
|
#include <OpenThreads/Condition>
|
|
|
|
//! Member of CComponents. Provides a generic timer class
|
|
/*!
|
|
|
|
*/
|
|
|
|
class CComponentsTimer : public sigc::trackable
|
|
{
|
|
private:
|
|
///thread
|
|
pthread_t tm_thread;
|
|
///refresh interval in seconds
|
|
int tm_interval;
|
|
///init function to start timer in own thread
|
|
static void* initTimerThread(void *arg);
|
|
///mutex for timer
|
|
OpenThreads::Mutex mutex;
|
|
///slot for signals
|
|
sigc::slot0<bool> sl;
|
|
|
|
public:
|
|
///class constructor, parameter interval sets the interval in seconds, default value=1 (1 sec)
|
|
CComponentsTimer(const int& interval = 1);
|
|
~CComponentsTimer();
|
|
|
|
///start timer thread, returns true on success, if false causes log output
|
|
bool startTimer();
|
|
///stop timer thread, returns true on success, if false causes log output
|
|
bool stopTimer();
|
|
|
|
///returns true, if timer is running in thread
|
|
bool isRun() const {return tm_thread;};
|
|
///set another interval in seconds
|
|
void setTimerIntervall(const int& seconds){tm_interval = seconds;};
|
|
|
|
///signal for timer event, use this in your class where ever you need time controled actions
|
|
///for more details see also CComponentsSignals for similar handlings
|
|
sigc::signal<void> OnTimer;
|
|
};
|
|
|
|
#endif
|