X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglretrace_glx.cpp;h=7efc3bf38e133ecb18dfce406e7439712a607bde;hb=refs%2Fheads%2Fglx-copy-sub-buffer;hp=fe88a59406ab285c0ace7327077bbbe4f929406e;hpb=1c803f585d1722fa0809c18c023ba8cf29106f88;p=apitrace diff --git a/retrace/glretrace_glx.cpp b/retrace/glretrace_glx.cpp index fe88a59..7efc3bf 100644 --- a/retrace/glretrace_glx.cpp +++ b/retrace/glretrace_glx.cpp @@ -111,6 +111,16 @@ static void retrace_glXDestroyContext(trace::Call &call) { delete context; } +static void retrace_glXCopySubBufferMESA(trace::Call &call) { + glws::Drawable *drawable = getDrawable(call.arg(1).toUInt()); + int x = call.arg(2).toSInt(); + int y = call.arg(3).toSInt(); + int width = call.arg(4).toSInt(); + int height = call.arg(5).toSInt(); + + drawable->copySubBuffer(x, y, width, height); +} + static void retrace_glXSwapBuffers(trace::Call &call) { glws::Drawable *drawable = getDrawable(call.arg(1).toUInt()); @@ -133,7 +143,7 @@ static void retrace_glXCreateNewContext(trace::Call &call) { } static void retrace_glXCreatePbuffer(trace::Call &call) { - const trace::Value *attrib_list = dynamic_cast(&call.arg(2)); + const trace::Value *attrib_list = call.arg(2).toArray(); int width = glretrace::parseAttrib(attrib_list, GLX_PBUFFER_WIDTH, 0); int height = glretrace::parseAttrib(attrib_list, GLX_PBUFFER_HEIGHT, 0); @@ -173,7 +183,7 @@ const retrace::Entry glretrace::glx_callbacks[] = { {"glXChooseVisual", &retrace::ignore}, //{"glXCopyContext", &retrace_glXCopyContext}, //{"glXCopyImageSubDataNV", &retrace_glXCopyImageSubDataNV}, - //{"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA}, + {"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA}, {"glXCreateContextAttribsARB", &retrace_glXCreateContextAttribsARB}, {"glXCreateContext", &retrace_glXCreateContext}, //{"glXCreateContextWithConfigSGIX", &retrace_glXCreateContextWithConfigSGIX},