From 0f34fbd29a92f76c83fdf35482ac7fe2902e2c9f Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 14 Nov 2014 23:26:18 +0000 Subject: [PATCH] Check that for each new context we populate hooks to get func ptrs --- renderdoc/hooks/gl_linux_hooks.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/renderdoc/hooks/gl_linux_hooks.cpp b/renderdoc/hooks/gl_linux_hooks.cpp index b23932b16..865c5ab59 100644 --- a/renderdoc/hooks/gl_linux_hooks.cpp +++ b/renderdoc/hooks/gl_linux_hooks.cpp @@ -283,6 +283,8 @@ class OpenGLHook : LibraryHook vector glXExts; string glXExtsString; + set m_Contexts; + bool m_PopulatedHooks; bool m_HasHooks; bool m_EnabledHooks; @@ -397,9 +399,14 @@ Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx) { Bool ret = OpenGLHook::glhooks.glXMakeCurrent_real(dpy, drawable, ctx); - OpenGLHook::glhooks.GetDriver()->ActivateContext((void *)drawable, ctx); + if(ctx && OpenGLHook::glhooks.m_Contexts.find(ctx) == OpenGLHook::glhooks.m_Contexts.end()) + { + OpenGLHook::glhooks.m_Contexts.insert(ctx); + + OpenGLHook::glhooks.PopulateHooks(); + } - OpenGLHook::glhooks.GetRealFunctions(); + OpenGLHook::glhooks.GetDriver()->ActivateContext((void *)drawable, ctx); return ret; }