SoOneShotSensor(3IV)NAMESoOneShotSensor (SoOneShotSens) - sensor for one-time only callbacks
INHERITS FROM
SoSensor > SoDelayQueueSensor > SoOneShotSensorSYNOPSIS
#include <Inventor_c/sensors/SoOneShotSensor.h>
typedef SoOneShotSensor SoOneShotSens
Functions from class SoOneShotSensor:
SoOneShotSensor * SoOneShotSensCreate()SoOneShotSensor * SoOneShotSensCreateCB(SoSensorCB *func, void *data)
void SoOneShotSensDelete(SoOneShotSens *this)
Functions from class SoDelayQueueSensor:
void SoOneShotSensSetPri(SoOneShotSens *this, uint32_t
pri)
uint32_t SoOneShotSensGetPri(SoOneShotSens *this)
uint32_t SoOneShotSensGetDefaultPriority()
void SoOneShotSensSched(SoOneShotSens *this)
void SoOneShotSensUnsched(SoOneShotSens *this)
SbBool SoOneShotSensIsSched(SoOneShotSens *this)
Functions from class SoSensor:
void SoOneShotSensSetFunc(SoOneShotSens *this, SoSensorCB
*callbackFunction)
SoSensorCB * SoOneShotSensGetFunc(const SoOneShotSens *this)
void SoOneShotSensSetData(SoOneShotSens *this, void
*callbackData)
void * SoOneShotSensGetData(const SoOneShotSens *this)
DESCRIPTION
A one-shot sensor is triggered once after it is scheduled, when the delay
queue is processed. Like all delay queue sensors, one-shot sensors with a
non-zero priority are just added to the delay queue when scheduled; if
they are scheduled again before the delay queue is processed nothing
happens, and they are guaranteed to be called only once when the delay
queue is processed. For example, a one-shot sensor whose callback
function redraws the scene might be scheduled whenever the scene graph
changes and whenever a window-system event reporting that the window
changed size occurs. By using a one-shot, the scene will only be redrawn
once even if a window-changed-size event occurs just after the scene
graph is modified (or if several window-changed-size events occur in a
row).
Calling schedule() in the callback function is a useful way of getting
Page 1SoOneShotSensor(3IV)
something to happen repeatedly as often as possible, while still handling
events and timeouts.
A priority 0 one-shot sensor isn't very useful, since scheduling it is
exactly the same as directly calling its callback function.
FUNCTIONSSoOneShotSensor * SoOneShotSensCreate()SoOneShotSensor * SoOneShotSensCreateCB(SoSensorCB *func, void *data)
Creation methods. The second method takes the callback function and
data to be called when the sensor is triggered.
void SoOneShotSensDelete(SoOneShotSens *this)
Destroys the sensor, freeing up any memory associated with it after
unscheduling it.
SEE ALSO
SoIdleSensor, SoDelayQueueSensor
Page 2