diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 60d40188343..67537b816fb 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -589,7 +589,6 @@ dri2DestroyScreen(struct glx_screen *base) /* Free the direct rendering per screen data */ driDestroyScreen(psc->driScreen); driDestroyConfigs(psc->driver_configs); - free(psc->driverName); close(psc->fd); free(psc); } @@ -876,9 +875,7 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, static char * dri2_get_driver_name(struct glx_screen *glx_screen) { - struct dri2_screen *psc = (struct dri2_screen *)glx_screen; - - return psc->driverName; + return glx_screen->driverName; } static const struct glx_screen_vtable dri2_screen_vtable = { @@ -950,7 +947,7 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe free(driverName); driverName = loader_driverName; } - psc->driverName = driverName; + psc->base.driverName = driverName; extensions = driOpenDriver(driverName, driver_name_is_inferred); if (extensions == NULL) diff --git a/src/glx/dri2_priv.h b/src/glx/dri2_priv.h index 0468b237657..d1200282928 100644 --- a/src/glx/dri2_priv.h +++ b/src/glx/dri2_priv.h @@ -47,7 +47,6 @@ struct dri2_screen { const __DRIconfig **driver_configs; - char *driverName; int fd; int show_fps_interval; diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 391a4a0988a..c23122279ae 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -779,6 +779,7 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in ErrorMessageF("No driver found\n"); goto handle_error; } + psc->base.driverName = driverName; if (!strcmp(driverName, "zink") && !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false)) { *return_zink = true; @@ -895,8 +896,6 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in } } - free(driverName); - InfoMessageF("Using DRI3 for screen %d\n", screen); psc->prefer_back_buffer_reuse = 1; @@ -931,7 +930,6 @@ handle_error: if (psc->fd_render_gpu >= 0) close(psc->fd_render_gpu); - free(driverName); glx_screen_cleanup(&psc->base); free(psc); diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 7c8f617f614..6b064fc21f4 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -754,7 +754,6 @@ driswDestroyScreen(struct glx_screen *base) driDestroyScreen(psc->driScreen); driDestroyConfigs(psc->driver_configs); psc->driScreen = NULL; - free(psc->name); free(psc); } @@ -762,7 +761,7 @@ static char * drisw_get_driver_name(struct glx_screen *glx_screen) { struct drisw_screen *psc = (struct drisw_screen *) glx_screen; - return strdup(psc->name); + return strdup(psc->base.driverName); } static const struct glx_screen_vtable drisw_screen_vtable = { @@ -894,7 +893,7 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv extensions = driOpenDriver(driver, driver_name_is_inferred); if (extensions == NULL) goto handle_error; - psc->name = strdup(driver); + psc->base.driverName = strdup(driver); if (glx_driver) loader_extensions_local = kopper_extensions_noshm; diff --git a/src/glx/drisw_priv.h b/src/glx/drisw_priv.h index 4aeba693b63..b57e65d1117 100644 --- a/src/glx/drisw_priv.h +++ b/src/glx/drisw_priv.h @@ -42,7 +42,6 @@ struct drisw_screen const __DRIconfig **driver_configs; - char *name; bool kopper; }; diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index 87295871562..4d28152873f 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -515,6 +515,8 @@ struct glx_screen bool allow_invalid_glx_destroy_window; bool keep_native_window_glx_drawable; + char *driverName; + #if defined(GLX_DIRECT_RENDERING) && (!defined(GLX_USE_APPLEGL) || defined(GLX_USE_APPLE)) /** * Per screen direct rendering interface functions and data. diff --git a/src/glx/glxext.c b/src/glx/glxext.c index a8874defab3..d27ecfea811 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -742,6 +742,7 @@ glx_screen_cleanup(struct glx_screen *psc) free((char *) psc->serverGLXexts); free((char *) psc->serverGLXvendor); free((char *) psc->serverGLXversion); + free(psc->driverName); } /*