From 5a4656a731fbdb9703b1071c8941a872cfb100b1 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 25 Apr 2025 19:49:25 +0200 Subject: [PATCH] randr: 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 --- randr/randr.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/randr/randr.c b/randr/randr.c index df9ae37f7..cba216c34 100644 --- a/randr/randr.c +++ b/randr/randr.c @@ -29,6 +29,8 @@ #include #include "extinit_priv.h" + +#include "dix/screen_hooks_priv.h" #include "randr/randrstr_priv.h" #include "randr/rrdispatch_priv.h" @@ -82,14 +84,13 @@ RRClientCallback(CallbackListPtr *list, void *closure, void *data) } } -static Bool -RRCloseScreen(ScreenPtr pScreen) +static void RRCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void *unused) { rrScrPriv(pScreen); int j; RRLeasePtr lease, next; - unwrap(pScrPriv, pScreen, CloseScreen); + dixScreenUnhookClose(pScreen, RRCloseScreen); xorg_list_for_each_entry_safe(lease, next, &pScrPriv->leases, list) RRTerminateLease(lease); @@ -107,7 +108,6 @@ RRCloseScreen(ScreenPtr pScreen) free(pScrPriv->outputs); free(pScrPriv); RRNScreens -= 1; /* ok, one fewer screen with RandR running */ - return (*pScreen->CloseScreen) (pScreen); } static void @@ -338,7 +338,7 @@ RRScreenInit(ScreenPtr pScreen) pScrPriv->lastSetTime = currentTime; pScrPriv->lastConfigTime = currentTime; - wrap(pScrPriv, pScreen, CloseScreen, RRCloseScreen); + dixScreenHookClose(pScreen, RRCloseScreen); pScreen->ConstrainCursorHarder = RRConstrainCursorHarder; pScreen->ReplaceScanoutPixmap = RRReplaceScanoutPixmap;