From 694dc0b60e2e0f5002c11c9980b59b428125beb1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 1 Mar 2012 15:44:07 +0000 Subject: [PATCH] Get the buffer map pointer _before_ unmaping. And therefore actually call delRegionByPointer() --- glretrace.py | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/glretrace.py b/glretrace.py index 8dfc340..28d8d74 100644 --- a/glretrace.py +++ b/glretrace.py @@ -237,6 +237,25 @@ class GlRetracer(Retracer): if function.name == 'memcpy': print ' if (!dest || !src || !n) return;' + + # Destroy the buffer mapping + if function.name in self.unmap_function_names: + print r' GLvoid *ptr = NULL;' + if function.name == 'glUnmapBuffer': + print r' glGetBufferPointerv(target, GL_BUFFER_MAP_POINTER, &ptr);' + elif function.name == 'glUnmapBufferARB': + print r' glGetBufferPointervARB(target, GL_BUFFER_MAP_POINTER_ARB, &ptr);' + elif function.name == 'glUnmapBufferOES': + print r' glGetBufferPointervOES(target, GL_BUFFER_MAP_POINTER_OES, &ptr);' + elif function.name == 'glUnmapNamedBufferEXT': + print r' glGetNamedBufferPointervEXT(buffer, GL_BUFFER_MAP_POINTER, &ptr);' + else: + assert False + print r' if (ptr) {' + print r' retrace::delRegionByPointer(ptr);' + print r' } else {' + print r' retrace::warning(call) << "no current context\n";' + print r' }' Retracer.invokeFunction(self, function) @@ -330,22 +349,6 @@ class GlRetracer(Retracer): print r' glGetNamedBufferParameterivEXT(buffer, GL_BUFFER_SIZE, &length);' else: assert False - # Destroy the buffer mapping - if function.name in self.unmap_function_names: - print r' GLvoid *ptr = NULL;' - if function.name == 'glUnmapBuffer': - print r' glGetBufferPointerv(target, GL_BUFFER_MAP_POINTER, &ptr);' - elif function.name == 'glUnmapBufferARB': - print r' glGetBufferPointervARB(target, GL_BUFFER_MAP_POINTER_ARB, &ptr);' - elif function.name == 'glUnmapBufferOES': - print r' glGetBufferPointervOES(target, GL_BUFFER_MAP_POINTER_OES, &ptr);' - elif function.name == 'glUnmapNamedBufferEXT': - print r' glGetNamedBufferPointervEXT(buffer, GL_BUFFER_MAP_POINTER, &ptr);' - else: - assert False - print r' if (ptr) {' - print r' retrace::delRegionByPointer(ptr);' - print r' }' def extractArg(self, function, arg, arg_type, lvalue, rvalue): if function.name in self.array_pointer_function_names and arg.name == 'pointer': -- 2.45.2