static void retrace_CGLChoosePixelFormat(trace::Call &call) {
int profile = kCGLOGLPVersion_Legacy;
- const trace::Array * attribs = dynamic_cast<const trace::Array *>(&call.arg(0));
+ const trace::Array * attribs = call.arg(0).toArray();
if (attribs) {
size_t i = 0;
while (i < attribs->values.size()) {
unsigned long long share = call.arg(1).toUIntPtr();
Context *sharedContext = getContext(share);
- const trace::Array *ctx_ptr = dynamic_cast<const trace::Array *>(&call.arg(2));
+ const trace::Array *ctx_ptr = call.arg(2).toArray();
unsigned long long ctx = ctx_ptr->values[0]->toUIntPtr();
Context *context = glretrace::createContext(sharedContext);
Context *context = getContext(ctx);
if (context) {
- if (retrace::doubleBuffer) {
- context->drawable->swapBuffers();
+ if (context->drawable) {
+ if (retrace::doubleBuffer) {
+ context->drawable->swapBuffers();
+ } else {
+ glFlush();
+ }
+ frame_complete(call);
} else {
- glFlush();
+ if (retrace::debug) {
+ retrace::warning(call) << "context has no drawable\n";
+ }
}
-
- frame_complete(call);
}
}
GLvoid * pixels = NULL;
- if (glretrace::currentContext != context) {
+ if (glretrace::getCurrentContext() != context) {
if (retrace::debug) {
retrace::warning(call) << "current context mismatch\n";
}
const retrace::Entry glretrace::cgl_callbacks[] = {
{"CGLChoosePixelFormat", &retrace_CGLChoosePixelFormat},
- {"CGLDestroyPixelFormat", &retrace::ignore},
{"CGLCreateContext", &retrace_CGLCreateContext},
{"CGLDestroyContext", &retrace_CGLDestroyContext},
- {"CGLSetCurrentContext", &retrace_CGLSetCurrentContext},
- {"CGLGetCurrentContext", &retrace::ignore},
- {"CGLEnable", &retrace::ignore},
+ {"CGLDestroyPixelFormat", &retrace::ignore},
{"CGLDisable", &retrace::ignore},
- {"CGLSetParameter", &retrace::ignore},
- {"CGLGetParameter", &retrace::ignore},
+ {"CGLEnable", &retrace::ignore},
+ {"CGLErrorString", &retrace::ignore},
{"CGLFlushDrawable", &retrace_CGLFlushDrawable},
- {"CGLUpdateContext", &retrace::ignore},
+ {"CGLGetCurrentContext", &retrace::ignore},
+ {"CGLGetOption", &retrace::ignore},
+ {"CGLGetParameter", &retrace::ignore},
+ {"CGLGetVersion", &retrace::ignore},
+ {"CGLGetVirtualScreen", &retrace::ignore},
+ {"CGLIsEnabled", &retrace::ignore},
+ {"CGLSetCurrentContext", &retrace_CGLSetCurrentContext},
+ {"CGLSetParameter", &retrace::ignore},
{"CGLTexImageIOSurface2D", &retrace_CGLTexImageIOSurface2D},
+ {"CGLUpdateContext", &retrace::ignore},
{NULL, NULL},
};