summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-14 08:53:45 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-14 08:53:45 +0200
commit700fb1aadd86f6fc81f4acccfe44dd539f487c57 (patch)
tree8457c2c855f59c680885755ba981d59aee62893b
parentf265ca2afc52c5b9fcd7494ac182278ad92f6939 (diff)
Improve virtual void* Fl_Gl_Window_Driver::GetProcAddress(procName)
-rw-r--r--src/Fl_Gl_Window.cxx29
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H1
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx6
3 files changed, 18 insertions, 18 deletions
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) {
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H
index 9a3d06086..1f0332103 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H
+++ b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H
@@ -42,6 +42,7 @@ class Fl_Cocoa_Gl_Window_Driver : public Fl_Gl_Window_Driver {
virtual char *alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs);
virtual Fl_RGB_Image* capture_gl_rectangle(int x, int y, int w, int h);
virtual bool need_scissor() { return true; }
+ virtual void* GetProcAddress(const char *procName);
void apply_scissor();
};
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx
index a77ff7776..4d47c3015 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx
@@ -25,6 +25,7 @@
#include <FL/Fl_Graphics_Driver.H>
#include <OpenGL/OpenGL.h>
#include <FL/Fl_Image_Surface.H>
+#include <dlfcn.h>
extern void gl_texture_reset();
@@ -293,6 +294,11 @@ Fl_RGB_Image* Fl_Cocoa_Gl_Window_Driver::capture_gl_rectangle(int x, int y, int
}
+void* Fl_Cocoa_Gl_Window_Driver::GetProcAddress(const char *procName) {
+ return dlsym(RTLD_DEFAULT, procName);
+}
+
+
FL_EXPORT NSOpenGLContext *fl_mac_glcontext(GLContext rc) {
return (NSOpenGLContext*)rc;
}