X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglretrace_egl.cpp;h=c03d04c2d4fc16743e6b71665c42de5f4d518bcd;hb=d79c9a22244ebc7aba491ad50ef2edced6c00d88;hp=10c950b038d4f398457162c3caa086fc17d728c9;hpb=212ab924e5b9fc17820fe6b14547685ad2325f58;p=apitrace diff --git a/retrace/glretrace_egl.cpp b/retrace/glretrace_egl.cpp index 10c950b..c03d04c 100644 --- a/retrace/glretrace_egl.cpp +++ b/retrace/glretrace_egl.cpp @@ -127,6 +127,7 @@ static void retrace_eglDestroySurface(trace::Call &call) { it = drawable_map.find(orig_surface); if (it != drawable_map.end()) { + glretrace::Context *currentContext = glretrace::getCurrentContext(); if (!currentContext || it->second != currentContext->drawable) { // TODO: reference count delete it->second; @@ -137,13 +138,14 @@ static void retrace_eglDestroySurface(trace::Call &call) { static void retrace_eglBindAPI(trace::Call &call) { current_api = call.arg(0).toUInt(); + eglBindAPI(current_api); } static void retrace_eglCreateContext(trace::Call &call) { unsigned long long orig_context = call.ret->toUIntPtr(); unsigned long long orig_config = call.arg(1).toUIntPtr(); Context *share_context = getContext(call.arg(2).toUIntPtr()); - trace::Array *attrib_array = dynamic_cast(&call.arg(3)); + trace::Array *attrib_array = call.arg(3).toArray(); glws::Profile profile; switch (current_api) { @@ -187,7 +189,7 @@ static void retrace_eglCreateContext(trace::Call &call) { } retrace::warning(call) << "Failed to create " << name << " context.\n"; - os::abort(); + exit(1); } context_map[orig_context] = context; @@ -202,6 +204,7 @@ static void retrace_eglDestroyContext(trace::Call &call) { it = context_map.find(orig_context); if (it != context_map.end()) { + glretrace::Context *currentContext = glretrace::getCurrentContext(); if (it->second != currentContext) { // TODO: reference count delete it->second;