---
name: "SoOneShotSensor"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoOneShotSensor/3iv"
---

# SoOneShotSensor(3iv)

sensor for one-time only callbacks

## NAME

SoOneShotSensor — sensor for one-time only callbacks

## INHERITS FROM

SoSensor \> SoDelayQueueSensor \> SoOneShotSensor

## SYNOPSIS

**#include \<Inventor/sensors/SoOneShotSensor.h\>**

Methods from class SoOneShotSensor:

	**SoOneShotSensor()**\
 	**SoOneShotSensor(SoSensorCB \*func, void \*data)**\
 	**~SoOneShotSensor()**

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

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

## METHODS

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

	**~SoOneShotSensor()**\
 Destroys the sensor, freeing up any memory associated with it after unscheduling it.

## SEE ALSO

**SoIdleSensor, SoDelayQueueSensor**
