pfDBaseFunc(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages
NAME
pfDBaseFunc, pfGetDBaseFunc, pfAllocDBaseData, pfGetDBaseData,
pfPassDBaseData, pfDBase - Set database callback, allocate and pass
database data.
FUNCTION SPECIFICATION
#include <Performer/pf.h>
void pfDBaseFunc(pfDBaseFuncType func);
pfDBaseFuncType pfGetDBaseFunc(void);
void * pfAllocDBaseData(int bytes);
void * pfGetDBaseData(void);
void pfPassDBaseData(void);
void pfDBase(void);
typedef void (*pfDBaseFuncType)(void *userData);
DESCRIPTION
The func argument to pfDBaseFunc specifies the database callback
function. This function will be invoked by pfFrame and will be passed a
pointer to a data buffer allocated by pfAllocDBaseData. If a separate
process is allocated for database processing by the PFMP_FORK_DBASE mode
to pfMultiprocess, then pfFrame will cause func to be called in the
separate (DBASE) process. pfGetDBaseFunc returns the database callback
or NULL if none is set.
The database function's primary purpose is to provide asynchronous
database creation and deletion when using the pfBuffer mechanism and a
forked DBASE process (see PFMP_FORK_DBASE, pfMultiprocess, and new
pfBuffer).
When the database function is in a separate process, it will run
asynchronously with the rest of the rendering pipeline. Specifically, if
the database function takes more than a frame time, the rendering
pipeline will not be affected.
If a database function has been specified by pfDBaseFunc, it must call
pfDBase to carry out default OpenGL Performer database processing.
pfDBase should only be called from within the DBASE callback in the DBASE
process just like pfCull and pfDraw should only be called in the
pfChannel CULL and DRAW callbacks (pfChannel::setTravFunc) respectively.
If a database function has not been specified or is NULL, OpenGL
Performer automatically calls pfDBase from pfFrame.
Page 1
pfDBaseFunc(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages
pfAllocDBaseData returns a pointer to a chunk of shared memory of bytes
bytes. This memory buffer may be used to communicate information between
the database function and application. Database data should only be
allocated once. pfGetDBaseData returns the previously allocated database
data.
When the database function is forked, pfPassDBaseData should be used to
copy the database data into internal OpenGL Performer memory when the
next pfFrame is called. Once pfFrame is called, the application may
modify data in the database data buffer without fear of colliding with
the forked database function. However, modifications to the database data
chunk made by the DBASE process will not be visible to the APP process,
i.e, there is no "upstream" propagation of passthrough data.
NOTES
Currently, pfDBase carries out asynchronous deletion requests made with
pfAsyncDelete.
SEE ALSO
pfAsyncDelete, pfConfig, pfFrame, pfMultiprocess, new, pfBuffer
Page 2