From 700fb1aadd86f6fc81f4acccfe44dd539f487c57 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Wed, 14 Sep 2022 08:53:45 +0200 Subject: Improve virtual void* Fl_Gl_Window_Driver::GetProcAddress(procName) --- src/Fl_Gl_Window.cxx | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'src/Fl_Gl_Window.cxx') diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index 2842338fe..7784af9cb 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -521,28 +521,21 @@ char Fl_Gl_Window_Driver::swap_type() {return UNDEFINED;} void* Fl_Gl_Window_Driver::GetProcAddress(const char *procName) { -#if (HAVE_DLSYM && HAVE_DLFCN_H) +#if defined(HAVE_GLXGETPROCADDRESSARB) + return (void*)glXGetProcAddressARB((const GLubyte *)procName); + +#elif (HAVE_DLSYM && HAVE_DLFCN_H) +# ifdef RTLD_DEFAULT + void *rtld_default = RTLD_DEFAULT; +# else + static void *rtld_default = dlopen(0, RTLD_LAZY); +# endif char symbol[1024]; - snprintf(symbol, sizeof(symbol), "_%s", procName); + return dlsym(rtld_default, symbol); -# ifdef RTLD_DEFAULT - return dlsym(RTLD_DEFAULT, symbol); - -# else // No RTLD_DEFAULT support, so open the current a.out symbols... - static void *rtld_default = dlopen(0, RTLD_LAZY); - - if (rtld_default) return dlsym(rtld_default, symbol); - else return 0; - -# endif // RTLD_DEFAULT - -#elif defined(HAVE_GLXGETPROCADDRESSARB) - return (void*)glXGetProcAddressARB((const GLubyte *)procName); - -#else - return 0; #endif // HAVE_DLSYM + return NULL; } Fl_Font_Descriptor** Fl_Gl_Window_Driver::fontnum_to_fontdescriptor(int fnum) { -- cgit v1.2.3