diff --git a/renderdoc/driver/gl/gl_hooks_egl.cpp b/renderdoc/driver/gl/gl_hooks_egl.cpp index ac6f64609..86e4f48b1 100644 --- a/renderdoc/driver/gl/gl_hooks_egl.cpp +++ b/renderdoc/driver/gl/gl_hooks_egl.cpp @@ -62,7 +62,10 @@ public: const GLHookSet &GetRealGLFunctions() { if(!m_PopulatedHooks) + { m_PopulatedHooks = PopulateHooks(); + SharedCheckContext(); + } return GL; } diff --git a/renderdoc/driver/gl/gl_hooks_linux.cpp b/renderdoc/driver/gl/gl_hooks_linux.cpp index 19ebbcb2a..5f454d446 100644 --- a/renderdoc/driver/gl/gl_hooks_linux.cpp +++ b/renderdoc/driver/gl/gl_hooks_linux.cpp @@ -647,8 +647,6 @@ __attribute__((visibility("default"))) Bool glXMakeCurrent(Display *dpy, GLXDraw glhooks.m_Contexts.insert(ctx); glhooks.PopulateHooks(); - - SharedCheckContext(); } GLWindowingData data; @@ -676,8 +674,6 @@ __attribute__((visibility("default"))) Bool glXMakeContextCurrent(Display *dpy, glhooks.m_Contexts.insert(ctx); glhooks.PopulateHooks(); - - SharedCheckContext(); } GLWindowingData data; @@ -868,9 +864,16 @@ bool OpenGLHook::PopulateHooks() glXGetProcAddress((const GLubyte *)"glXCreateContextAttribsARB"); - return SharedPopulateHooks(true, [](const char *funcName) { + bool ret = SharedPopulateHooks(true, [](const char *funcName) { return (void *)glXGetProcAddress((const GLubyte *)funcName); }); + + if(!ret) + return false; + + SharedCheckContext(); + + return true; } const GLHookSet &GetRealGLFunctions()