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