mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-04-14 11:04:42 +00:00
Don't rely on randr_crtc->scanout_pixmap in drmmode_set_scanout_pixmap
RRReplaceScanoutPixmap may set randr_crtc->scanout_pixmap = NULL before we get here. (Inspired by xserver commit f4c37eeee7953df1fe0e3196eda452acf0078e61) v2: Always return TRUE in the if (!ppix) block. (Cherry picked from radeon commit 61df12e2377cbb19a19ca9d5624df8959822da9f) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -1105,10 +1105,19 @@ static Bool drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
|
||||
AMDGPUInfoPtr info = AMDGPUPTR(crtc->scrn);
|
||||
|
||||
if (!ppix) {
|
||||
if (crtc->randr_crtc->scanout_pixmap)
|
||||
PixmapStopDirtyTracking(crtc->randr_crtc->scanout_pixmap,
|
||||
drmmode_crtc->scanout[drmmode_crtc->scanout_id].pixmap);
|
||||
drmmode_crtc_scanout_free(drmmode_crtc);
|
||||
ScreenPtr screen = crtc->scrn->pScreen;
|
||||
PixmapDirtyUpdatePtr dirty;
|
||||
|
||||
xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list, ent) {
|
||||
if (dirty->slave_dst !=
|
||||
drmmode_crtc->scanout[drmmode_crtc->scanout_id].pixmap)
|
||||
continue;
|
||||
|
||||
PixmapStopDirtyTracking(dirty->src, dirty->slave_dst);
|
||||
drmmode_crtc_scanout_free(drmmode_crtc);
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user