summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drmmode_display.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index de1c34b..5bddfd0 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2156,8 +2156,10 @@ void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(pScrn);
AMDGPUInfoPtr info = AMDGPUPTR(pScrn);
+ int c;
if (!info->drmmode_inited)
return;
@@ -2168,6 +2170,14 @@ void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
RemoveBlockAndWakeupHandlers((BlockHandlerProcPtr) NoopDDA,
drm_wakeup_handler, drmmode);
}
+
+ for (c = 0; c < config->num_crtc; c++) {
+ xf86CrtcPtr crtc = config->crtc[c];
+ drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
+ drmmode_crtc_scanout_destroy(&info->drmmode, &drmmode_crtc->scanout[0]);
+ drmmode_crtc_scanout_destroy(&info->drmmode, &drmmode_crtc->scanout[1]);
+ }
}
void drmmode_set_cursor(ScrnInfoPtr scrn, drmmode_ptr drmmode, int id,