void REPLICATESPU_APIENTRY replicatespu_WindowDestroy(GLint win) { WindowInfo *winInfo = (WindowInfo *) crHashtableSearch( replicate_spu.windowTable, win ); GET_THREAD(thread); int i; replicatespuFlushAll( (void *) thread ); if (winInfo) { for (i = 0; i < CR_MAX_REPLICANTS; i++) { if (!IS_CONNECTED(replicate_spu.rserver[i].conn)) continue; if (replicate_spu.swap) crPackWindowDestroySWAP( winInfo->id[i] ); else crPackWindowDestroy( winInfo->id[i] ); winInfo->id[i] = -1; /* just to be safe */ replicatespuFlushOne(thread, i); } } crHashtableDelete(replicate_spu.windowTable, win, crFree); }
void PACKSPU_APIENTRY packspu_VBoxWindowDestroy( GLint con, GLint window ) { if (CRPACKSPU_IS_WDDM_CRHGSMI()) { GET_THREAD(thread); if (con) { CRPackContext * curPacker = crPackGetContext(); CRASSERT(!thread || !thread->bInjectThread); thread = GET_THREAD_VAL_ID(con); crPackSetContext(thread->packer); crPackWindowDestroy(window); if (curPacker != thread->packer) crPackSetContext(curPacker); return; } CRASSERT(thread); CRASSERT(thread->bInjectThread); } crPackWindowDestroy(window); }
void PACKSPU_APIENTRY packspu_WindowDestroy( GLint window ) { if (pack_spu.swap) { crPackWindowDestroySWAP(window); } else { crPackWindowDestroy(window); } crHashtableDelete(pack_spu.XWindows,window,crFree); }