SoOneShotSensor.3iv - Man Page

sensor for one-time only callbacks

Inherits from

SoSensor > SoDelayQueueSensor > SoOneShotSensor


#include <Inventor/sensors/SoOneShotSensor.h>

Methods from class SoOneShotSensor:


SoOneShotSensor(SoSensorCB *func, void *data)


Methods from class SoDelayQueueSensor:

void setPriority(uint32_t pri)

uint32_t getPriority()

static uint32_t getDefaultPriority()

virtual void schedule()

virtual void unschedule()

virtual SbBool isScheduled()

Methods from class SoSensor:

void setFunction(SoSensorCB *callbackFunction)

SoSensorCB * getFunction() const

void setData(void *callbackData)

void * getData() const


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 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.



SoOneShotSensor(SoSensorCB *func, void *data)
Creation methods. The second method takes the callback function and data to be called when the sensor is triggered.

Destroys the sensor, freeing up any memory associated with it after unscheduling it.

See Also

SoIdleSensor, SoDelayQueueSensor