X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglretrace_main.cpp;h=5ccb2e2d2a2955f6b83a03da4508cfbd8ad5d57c;hb=1f94577d8c4b1c1a2a1a8f3dceb0daac02dd72b7;hp=f29ad01a07fd07c4d64b204a83897ae95b098bf6;hpb=5ed4ca62e0b1236ff45e608d6b531a2181c6afbb;p=apitrace diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index f29ad01..5ccb2e2 100755 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -174,12 +174,14 @@ flushQueries() { void beginProfile(trace::Call &call, bool isDraw) { + glretrace::Context *currentContext = glretrace::getCurrentContext(); + /* Create call query */ CallQuery query; query.isDraw = isDraw; query.call = call.no; query.sig = call.sig; - query.program = glretrace::currentContext ? glretrace::currentContext->activeProgram : 0; + query.program = currentContext ? currentContext->activeProgram : 0; /* GPU profiling only for draw calls */ if (isDraw) { @@ -230,6 +232,8 @@ endProfile(trace::Call &call, bool isDraw) { void initContext() { + glretrace::Context *currentContext = glretrace::getCurrentContext(); + /* Ensure we have adequate extension support */ assert(currentContext); supportsTimestamp = currentContext->hasExtension("GL_ARB_timer_query"); @@ -261,6 +265,7 @@ initContext() { /* Setup debug message call back */ if (retrace::debug && supportsDebugOutput) { + glretrace::Context *currentContext = glretrace::getCurrentContext(); glDebugMessageCallbackARB(&debugOutputCallback, currentContext); if (DEBUG_OUTPUT_SYNCHRONOUS) { @@ -309,10 +314,12 @@ frame_complete(trace::Call &call) { retrace::frameComplete(call); + glretrace::Context *currentContext = glretrace::getCurrentContext(); if (!currentContext) { return; } + assert(currentContext->drawable); if (retrace::debug && !currentContext->drawable->visible) { retrace::warning(call) << "could not infer drawable size (glViewport never called)\n"; } @@ -403,7 +410,7 @@ retrace::addCallbacks(retrace::Retracer &retracer) image::Image * retrace::getSnapshot(void) { - if (!glretrace::currentContext) { + if (!glretrace::getCurrentContext()) { return NULL; } @@ -414,8 +421,10 @@ retrace::getSnapshot(void) { bool retrace::dumpState(std::ostream &os) { + glretrace::Context *currentContext = glretrace::getCurrentContext(); + if (glretrace::insideGlBeginEnd || - !glretrace::currentContext) { + !currentContext) { return false; } @@ -426,8 +435,11 @@ retrace::dumpState(std::ostream &os) void retrace::flushRendering(void) { - glretrace::flushQueries(); - glFlush(); + glretrace::Context *currentContext = glretrace::getCurrentContext(); + if (currentContext) { + glretrace::flushQueries(); + glFlush(); + } } void