diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index aae8bc6c9dc..daeecd2b271 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -424,8 +424,6 @@ dri2DeinitScreen(struct glx_screen *base) { struct dri2_screen *psc = (struct dri2_screen *) base; - /* Free the direct rendering per screen data */ - driDestroyScreen(psc->base.frontend_screen); close(psc->fd); } @@ -801,9 +799,6 @@ handle_error: glx_config_destroy_list(configs); if (visuals) glx_config_destroy_list(visuals); - if (psc->base.frontend_screen) - driDestroyScreen(psc->base.frontend_screen); - psc->base.frontend_screen = NULL; if (psc->fd >= 0) close(psc->fd); diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 9ef7fdb22ce..cd61bbdb577 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -430,7 +430,6 @@ dri3_deinit_screen(struct glx_screen *base) if (psc->fd_render_gpu != psc->fd_display_gpu) close(psc->fd_display_gpu); loader_dri3_close_screen(psc->driScreenRenderGPU); - driDestroyScreen(psc->driScreenRenderGPU); close(psc->fd_render_gpu); } @@ -671,9 +670,6 @@ handle_error: glx_config_destroy_list(configs); if (visuals) glx_config_destroy_list(visuals); - if (psc->driScreenRenderGPU) - driDestroyScreen(psc->driScreenRenderGPU); - psc->driScreenRenderGPU = NULL; if (psc->fd_render_gpu != psc->fd_display_gpu && psc->driScreenDisplayGPU) driDestroyScreen(psc->driScreenDisplayGPU); psc->driScreenDisplayGPU = NULL; diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index b14a4c36228..d97c21c254e 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -563,15 +563,6 @@ drisw_copy_sub_buffer(__GLXDRIdrawable * pdraw, driswCopySubBuffer(pdraw->dri_drawable, x, y, width, height); } -static void -driswDeinitScreen(struct glx_screen *base) -{ - struct drisw_screen *psc = (struct drisw_screen *) base; - - /* Free the direct rendering per screen data */ - driDestroyScreen(psc->base.frontend_screen); -} - static int check_xshm(Display *dpy) { @@ -691,7 +682,6 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv psp = &psc->vtable; psc->base.driScreen = psp; psc->base.can_EXT_texture_from_pixmap = true; - psp->deinitScreen = driswDeinitScreen; psp->createDrawable = driswCreateDrawable; psp->swapBuffers = driswSwapBuffers; psp->bindTexImage = dri_bind_tex_image; @@ -714,8 +704,6 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv glx_config_destroy_list(configs); if (visuals) glx_config_destroy_list(visuals); - if (psc->base.frontend_screen) - driDestroyScreen(psc->base.frontend_screen); glx_screen_cleanup(&psc->base); free(psc); diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 995dfd5ef60..f39300f4208 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -741,6 +741,8 @@ glx_screen_cleanup(struct glx_screen *psc) } #if defined(GLX_DIRECT_RENDERING) && (!defined(GLX_USE_APPLEGL) || defined(GLX_USE_APPLE)) driDestroyConfigs(psc->driver_configs); + /* Free the direct rendering per screen data */ + driDestroyScreen(psc->frontend_screen); #endif free((char *) psc->serverGLXexts); free((char *) psc->serverGLXvendor);