//////////////////////////// constructor CaveScene::CaveScene(VMDApp *vmdapp) : app(vmdapp) { #if defined(CAVEUSERWLOCK) msgInfo << "Creating R/W lock for shared mem access sync.\n" << sendmsg; draw_rwlock = CAVENewLock(); // allocate a new CAVE lock CAVESetWriteLock(draw_rwlock); // start out locked for writing #else msgInfo << "Creating draw barrier for " << CAVEConfig->ActiveWalls << " active CAVE walls and master process.\n" << sendmsg; // setup the drawing barrier used to control slave rendering processes draw_barrier =(vmd_barrier_t *) malloc_from_CAVE_memory(sizeof(vmd_barrier_t)); if (draw_barrier == NULL) { msgErr << "CANNOT ALLOCATE SHARED MEMORY FOR CaveScene CLASS !!!" << sendmsg; } memset(draw_barrier, 0, sizeof(vmd_barrier_t)); if (getenv("VMDCAVEDRAWPROCS") != NULL) { vmd_thread_barrier_init_proc_shared(draw_barrier, atoi(getenv("VMDCAVEDRAWPROCS")) + 1); } else { vmd_thread_barrier_init_proc_shared(draw_barrier, CAVEConfig->ActiveWalls + 1); } #endif }
void *vrlib_lock_create (void) { return (void *) CAVENewLock (); }