00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef COIN_SOSENSORMANAGER_H
00021
#define COIN_SOSENSORMANAGER_H
00022
00023
#include <Inventor/SbBasic.h>
00024
00025
class SoDelayQueueSensor;
00026
class SoTimerQueueSensor;
00027
class SoTimerSensor;
00028
class SbTime;
00029
00030 class COIN_DLL_API SoSensorManager {
00031
public:
00032 SoSensorManager(
void);
00033 ~SoSensorManager();
00034
00035
void insertDelaySensor(
SoDelayQueueSensor * s);
00036
void insertTimerSensor(
SoTimerQueueSensor * s);
00037
void removeDelaySensor(
SoDelayQueueSensor * s);
00038
void removeTimerSensor(
SoTimerQueueSensor * s);
00039
00040
void setChangedCallback(
void (*func)(
void *),
void * data);
00041
00042
void rescheduleTimer(
SoTimerSensor * s);
00043
void removeRescheduledTimer(
SoTimerQueueSensor * s);
00044
00045
void processDelayQueue(SbBool isidle);
00046
void processImmediateQueue(
void);
00047
void processTimerQueue(
void);
00048
00049 SbBool isDelaySensorPending(
void);
00050 SbBool isTimerSensorPending(
SbTime & tm);
00051
00052
void setDelaySensorTimeout(
const SbTime & t);
00053
const SbTime & getDelaySensorTimeout(
void);
00054
00055
int doSelect(
int nfds,
void * readfds,
void * writefds,
00056
void * exceptfds,
struct timeval * userTimeOut);
00057
00058
private:
00059
void notifyChanged(
void);
00060
00061
int mergeTimerQueues(
void);
00062
int mergeDelayQueues(
void);
00063
00064
class SoSensorManagerP * pimpl;
00065
friend class SoSensorManagerP;
00066 };
00067
00068
#endif // !COIN_SOSENSORMANAGER_H