diff options
author | Eric Anholt <[email protected]> | 2013-09-27 15:36:59 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2013-10-24 14:04:20 -0700 |
commit | 80806c98ef9892abb225965f29027c9b201749ec (patch) | |
tree | ef44273ca7e699957cd10b0a2372dee9ac350964 | |
parent | 7463abd37d65abd4d87abe314e0629c853dd9bca (diff) |
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 <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
-rw-r--r-- | src/glx/dri2_glx.c | 6 | ||||
-rw-r--r-- | src/glx/dri_common.c | 14 | ||||
-rw-r--r-- | src/glx/dri_common.h | 2 |
3 files changed, 18 insertions, 4 deletions
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, |