void FEEDBACKSPU_APIENTRY feedbackspu_MakeCurrent( GLint window, GLint nativeWindow, GLint ctx ) { #ifdef CHROMIUM_THREADSAFE crLockMutex(&feedback_spu.mutex); #endif feedback_spu.child.MakeCurrent(window, nativeWindow, ctx); if (ctx) { int slot; GLint oldmode; for (slot=0; slot<feedback_spu.numContexts; ++slot) if (feedback_spu.context[slot].clientCtx == ctx) break; CRASSERT(slot < feedback_spu.numContexts); crStateMakeCurrent(feedback_spu.context[slot].clientState); crStateGetIntegerv(GL_RENDER_MODE, &oldmode); if (oldmode!=feedback_spu.render_mode) { feedback_spu.self.RenderMode(oldmode); } } else { crStateMakeCurrent(NULL); } #ifdef CHROMIUM_THREADSAFE crUnlockMutex(&feedback_spu.mutex); #endif }
GLboolean packspuSyncOnFlushes() { GLint buffer; /*Seems to still cause issues, always sync for now*/ return 1; crStateGetIntegerv(GL_DRAW_BUFFER, &buffer); /*Usually buffer==GL_BACK, so put this extra check to simplify boolean eval on runtime*/ return (buffer != GL_BACK) && (buffer == GL_FRONT_LEFT || buffer == GL_FRONT_RIGHT || buffer == GL_FRONT || buffer == GL_FRONT_AND_BACK || buffer == GL_LEFT || buffer == GL_RIGHT); }