From 553ea7ebbe683ec292ced9cd56d622c2469969df Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 4 Oct 2024 22:08:46 +0200 Subject: [PATCH] dri3: use CloseScreen hook Wrapping ScreenRec's function pointers is problematic for many reasons, so use the new screen close notify hook instead. Signed-off-by: Enrico Weigelt, metux IT consult --- dri3/dri3.c | 13 ++++++------- dri3/dri3_priv.h | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/dri3/dri3.c b/dri3/dri3.c index 2675b44ff..9d89b3adc 100644 --- a/dri3/dri3.c +++ b/dri3/dri3.c @@ -19,6 +19,9 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ +#include + +#include "dix/screen_hooks_priv.h" #include "dri3_priv.h" #include "extinit_priv.h" @@ -29,15 +32,11 @@ DevPrivateKeyRec dri3_screen_private_key; static int dri3_screen_generation; -static Bool -dri3_close_screen(ScreenPtr screen) +static void dri3_screen_close(CallbackListPtr *pcbl, ScreenPtr screen, void *unused) { dri3_screen_priv_ptr screen_priv = dri3_screen_priv(screen); - - unwrap(screen_priv, screen, CloseScreen); - + dixScreenUnhookClose(screen, dri3_screen_close); free(screen_priv); - return (*screen->CloseScreen) (screen); } Bool @@ -53,7 +52,7 @@ dri3_screen_init(ScreenPtr screen, const dri3_screen_info_rec *info) if (!screen_priv) return FALSE; - wrap(screen_priv, screen, CloseScreen, dri3_close_screen); + dixScreenHookClose(screen, dri3_screen_close); screen_priv->info = info; diff --git a/dri3/dri3_priv.h b/dri3/dri3_priv.h index 08bdbacfd..f4eaca3cc 100644 --- a/dri3/dri3_priv.h +++ b/dri3/dri3_priv.h @@ -44,7 +44,6 @@ typedef struct dri3_dmabuf_format { } dri3_dmabuf_format_rec, *dri3_dmabuf_format_ptr; typedef struct dri3_screen_priv { - CloseScreenProcPtr CloseScreen; ConfigNotifyProcPtr ConfigNotify; Bool formats_cached;