From: Eric Anholt Date: Fri, 27 Sep 2013 22:36:59 +0000 (-0700) Subject: glx: Move the driver extension-loading to a helper function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=80806c98ef9892abb225965f29027c9b201749ec;p=mesa.git glx: Move the driver extension-loading to a helper function. I'm planning on doing driver extension parsing from 3 places, and making the extension loading step a bit longer. Reviewed-by: Matt Turner Reviewed-by: Chad Versace Reviewed-by: Emil Velikov --- diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 07138fb11f8..123c87cbac9 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -1183,11 +1183,9 @@ dri2CreateScreen(int screen, struct glx_display * priv) goto handle_error; } - extensions = dlsym(psc->driver, __DRI_DRIVER_EXTENSIONS); - if (extensions == NULL) { - ErrorMessageF("driver exports no extensions (%s)\n", dlerror()); + extensions = driGetDriverExtensions(psc->driver); + if (extensions == NULL) goto handle_error; - } for (i = 0; extensions[i]; i++) { if (strcmp(extensions[i]->name, __DRI_CORE) == 0) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 5f199e9fde4..f1d1164571e 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -187,6 +187,20 @@ driOpenDriver(const char *driverName) return handle; } +_X_HIDDEN const __DRIextension ** +driGetDriverExtensions(void *handle) +{ + const __DRIextension **extensions = NULL; + + extensions = dlsym(handle, __DRI_DRIVER_EXTENSIONS); + if (extensions == NULL) { + ErrorMessageF("driver exports no extensions (%s)\n", dlerror()); + return NULL; + } + + return extensions; +} + static GLboolean __driGetMSCRate(__DRIdrawable *draw, int32_t * numerator, int32_t * denominator, diff --git a/src/glx/dri_common.h b/src/glx/dri_common.h index 2bbffa9ffbe..2ebcb812732 100644 --- a/src/glx/dri_common.h +++ b/src/glx/dri_common.h @@ -69,6 +69,8 @@ extern void CriticalErrorMessageF(const char *f, ...); extern void *driOpenDriver(const char *driverName); +extern const __DRIextension **driGetDriverExtensions(void *handle); + extern bool dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs, unsigned *major_ver, unsigned *minor_ver,