2008-01-14 Emmanuele Bassi <ebassi@openedhand.com>

* clutter/cogl/gl/cogl.c (cogl_get_proc_address): Implement non-GLX
	version using GModule and looking up the symbol from the running
	process. It should work when linked to library providing the
	requested function. (#696, Tommi Komulainen)
This commit is contained in:
Emmanuele Bassi 2008-01-14 11:52:04 +00:00
parent 37af2da410
commit 682eb3c6db

View File

@ -30,6 +30,7 @@
#include "cogl.h"
#include <string.h>
#include <gmodule.h>
#ifdef HAVE_CLUTTER_GLX
#include <dlfcn.h>
@ -125,7 +126,24 @@ cogl_get_proc_address (const gchar* name)
if (get_proc_func)
return get_proc_func ((unsigned char*) name);
#endif
#else /* !HAVE_CLUTTER_GLX */
/* this should find the right function if the program is linked against a
* library providing it */
static GModule *module = NULL;
if (module == NULL)
module = g_module_open (NULL, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
if (module)
{
gpointer symbol;
if (g_module_symbol (module, name, &symbol))
return symbol;
}
#endif /* HAVE_CLUTTER_GLX */
return NULL;
}