SoSensorManager - Online Linux Manual PageSection : 3
Updated : Mon Jan 25 2021
Source : Version 3.1.3
Note : Coin

NAMESoSensorManager − The SoSensorManager class handles the sensor queues​.

SYNOPSIS
#include <Inventor/sensors/SoSensorManager​.h>

Public Member FunctionsSoSensorManager (void)
~SoSensorManager ()
void insertDelaySensor (SoDelayQueueSensor *s)
void insertTimerSensor (SoTimerQueueSensor *s)
void removeDelaySensor (SoDelayQueueSensor *s)
void removeTimerSensor (SoTimerQueueSensor *s)
void setChangedCallback (void(*sensorQueueChangedCB)(void *), void *data)
void rescheduleTimer (SoTimerSensor *s)
void removeRescheduledTimer (SoTimerQueueSensor *s)
void processDelayQueue (SbBool isidle)
void processImmediateQueue (void)
void processTimerQueue (void)
SbBool isDelaySensorPending (void)
SbBool isTimerSensorPending (SbTime &tm)
void setDelaySensorTimeout (const SbTime &t)
const SbTime & getDelaySensorTimeout (void)
int doSelect (int nfds, void *readfds, void *writefds, void *exceptfds, struct timeval *userTimeOut)

Detailed DescriptionThe SoSensorManager class handles the sensor queues​. There are two major sensor types in Coin, 'delay' sensors and 'timer' sensors: • Delay sensors trigger when the application is otherwise idle​. In addition, to avoid starvation in applications that are continually busy, the delay-sensor queue also has a timeout which, when reached, will empty the queue anyhow​. • Timer sensors are set up to trigger at specific, absolute times​. Each of these two types has its own queue, which is handled by the SoSensorManager​. The queues are kept in sorted order by SoSensorManager, either according to trigger-time (for timer sensors) or by priority (for delay sensors)​. The SoSensorManager provides methods for managing these queues, by insertion and removal of sensors, and processing (emptying) of the queues​. The sensor mechanism is crucial in Coin for a number of important features, most notably automatic scheduling redrawal upon changes, and for making it possible to set up animations in the scenegraph which does not need any additional book-keeping from the application code​. SoSensorManager should usually be considered as an internal class in the Coin API​. It is only interesting for application programmers when implementing new windowsystem-specific libraries (like Kongsberg Oil & Gas Technologies SoQt, SoXt, SoGtk, SoWin or Sc21) or wrappers​. Then one has to set up code to empty the queues at the correct intervals​. For detailed information on how to do that, we would advise you to look at the implementation of said mechanisms in the So*-libraries which SIM provides​. Please note that before Coin 2​.3​.1, sensors with equal priority (or the same trigger time for SoTimerQueue sensors) were processed LIFO​. This has now been changed to FIFO to be conformant to SGI Inventor​. See also SoSensor SoTimerQueueSensor SoDelayQueueSensor SoTimerSensor SoAlarmSensor SoIdleSensor SoDataSensor SoOneShotSensor SoPathSensor SoFieldSensor SoNodeSensor

Constructor & Destructor Documentation

SoSensorManager::SoSensorManager (void)Constructor​.

SoSensorManager::~SoSensorManager ()Destructor​.

Member Function Documentation

void SoSensorManager::insertDelaySensor (SoDelayQueueSensor * newentry)Add a new entry to the queue of delay sensors​. See also removeFromQueue()

void SoSensorManager::insertTimerSensor (SoTimerQueueSensor * newentry)Add a new entry to the timer queue of sensors​. The queue will be sorted in order of supposed trigger time​. See also removeFromQueue()

void SoSensorManager::removeDelaySensor (SoDelayQueueSensor * entry)Remove an entry from the queue of prioritized sensors​. See also addToQueue()

void SoSensorManager::removeTimerSensor (SoTimerQueueSensor * entry)Remove an entry from the queue of timer sensors​.

void SoSensorManager::setChangedCallback (void(*)(void *) func, void * data)For setting up a callback function to be invoked whenever any of the sensor queues are changed​. This callback should typically be responsible for updating the client-side mechanism which is used for processing the queues​.

void SoSensorManager::rescheduleTimer (SoTimerSensor * s)This API member is considered internal to the library, as it is not likely to be of interest to the application programmer​.


void SoSensorManager::removeRescheduledTimer (SoTimerQueueSensor * s)This API member is considered internal to the library, as it is not likely to be of interest to the application programmer​.


void SoSensorManager::processDelayQueue (SbBool isidle)Trigger all delay queue entries in priority order​. The isidle flag indicates whether or not the processing happens because the application is idle or because the delay queue timeout was reached​. A delay queue sensor with priority > 0 can only be triggered once during a call to this function​. If a delay sensor is rescheduled during processDelayQueue(), it is not processed until the next time this function is called​. This is done to avoid an infinite loop while processing the sensors​. A delay queue sensor with priority 0 is called an immediate sensor​. See also SoDB::setDelaySensorTimeout() SoSensorManager::processImmediateQueue()

void SoSensorManager::processImmediateQueue (void)Process all immediate sensors (delay sensors with priority 0)​. Be aware that you might risk an infinite loop using immediate sensors​. Unlike delay queue sensors, immediate sensors can be rescheduled and triggered multiple times during immediate queue processing​. See also SoDelayQueueSensor::setPriority()

void SoSensorManager::processTimerQueue (void)Trigger all the timers which has expired​.

SbBool SoSensorManager::isDelaySensorPending (void)Returns TRUE if at least one delay sensor or immediate sensor is present in the respective queue, otherwise FALSE​.

SbBool SoSensorManager::isTimerSensorPending (SbTime & tm)Returns TRUE if at least one timer sensor is present in the queue, otherwise FALSE​. If sensors are pending, the time interval until the next one should be triggered will be put in the tm variable​.

void SoSensorManager::setDelaySensorTimeout (const SbTime & t)Delay sensors are usually triggered only when the system is idle​. But when there are continuous updates to the scene graph, there's a possibility that the delay queue will starve and sensors are never triggered​. To make sure this won't happen, this is a timeout value for the delay queue​. When this timeout has been reached, the sensors in the delay queue gets processed before other sensors and events​. This method will let the user set this timeout value​. The default value is 1/12 of a second​. Specifying a zero time will disable the timeout, opening for potential delay queue starvation​. See also getDelaySensorTimeout(), SoDelayQueueSensor

const SbTime & SoSensorManager::getDelaySensorTimeout (void)Returns the timeout value for sensors in the delay queue​. See also setDelaySensorTimeout(), SoDelayQueueSensor

int SoSensorManager::doSelect (int nfds, void * readfds, void * writefds, void * exceptfds, struct timeval * usertimeout)NOTE: THIS METHOD IS OBSOLETED​. DON'T USE IT​. This is a wrapper around the standard select(2) call, which will make sure the sensor queues are updated while waiting for any action to happen on the given file descriptors​. The void* arguments must be valid pointers to fd_set structures​. We've changed this from the original SGI Inventor API to avoid messing up the header file with system-specific includes​. NOTE: THIS METHOD IS OBSOLETED​. DON'T USE IT​.

AuthorGenerated automatically by Doxygen for Coin from the source code​.
0
Johanes Gumabo
Data Size   :   32,515 byte
man-SoSensorManager.3coin3Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 189,602
Visitor ID   :     :  
Visitor IP   :   18.191.171.136   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.