void PACKSPU_APIENTRY packspu_Disable( GLenum cap ) { if (cap!=GL_LIGHT_MODEL_TWO_SIDE) { if (cap == GL_TEXTURE_2D) { if (g_VDbgBreakEnableDisable & CRDBG_BREAK_DISABLE_TEXTURE_2D) { RT_BREAKPOINT();} } else if (cap == GL_TEXTURE_RECTANGLE_NV) { if (g_VDbgBreakEnableDisable & CRDBG_BREAK_DISABLE_TEXTURE_RECTANGLE) { RT_BREAKPOINT();} } crStateDisable(cap); if (pack_spu.swap) crPackDisableSWAP(cap); else crPackDisable(cap); } else { static int g_glmts0_warn=0; if (!g_glmts0_warn) { crWarning("glDisable(GL_LIGHT_MODEL_TWO_SIDE) converted to valid glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,0)"); g_glmts0_warn=1; } crStateLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0); crPackLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0); } }
LONG WINAPI vboxVDbgVectoredHandler(struct _EXCEPTION_POINTERS *pExceptionInfo) { PEXCEPTION_RECORD pExceptionRecord = pExceptionInfo->ExceptionRecord; PCONTEXT pContextRecord = pExceptionInfo->ContextRecord; switch (pExceptionRecord->ExceptionCode) { case EXCEPTION_BREAKPOINT: case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_FLT_DIVIDE_BY_ZERO: case EXCEPTION_FLT_INVALID_OPERATION: case EXCEPTION_INT_DIVIDE_BY_ZERO: case EXCEPTION_ILLEGAL_INSTRUCTION: if (g_VBoxVehFlags & VBOXVEH_F_BREAK) { BOOL fBreak = TRUE; #ifndef DEBUG_misha if (pExceptionRecord->ExceptionCode == EXCEPTION_BREAKPOINT) { HANDLE hProcess = GetCurrentProcess(); BOOL fDebuggerPresent = FALSE; /* we do not want to generate breakpoint exceptions recursively, so do it only when running under debugger */ if (CheckRemoteDebuggerPresent(hProcess, &fDebuggerPresent)) fBreak = !!fDebuggerPresent; else fBreak = FALSE; /* <- the function has failed, don't break for sanity */ } #endif if (fBreak) { RT_BREAKPOINT(); } } if (g_VBoxVehFlags & VBOXVEH_F_DUMP) vboxMdMinidumpCreate(pExceptionInfo); if (g_VBoxVehFlags & VBOXVEH_F_EXIT) exit(1); break; default: break; } return EXCEPTION_CONTINUE_SEARCH; }