On 2018-04-17 01:11 PM, Jim Qu wrote: > There is a case that when set screen from reverse to normal, the old > scanout damage is freed in modesetting before sanout update handler, > so it causes segment fault issue. Good catch, thanks. > diff --git a/src/drmmode_display.c b/src/drmmode_display.c > index 85970d1..ea38e29 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -902,6 +902,9 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, > drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd, > drmmode_crtc->flip_pending); > > + drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd, > + drmmode_crtc->scanout_update_pending); > + > if (!drmmode_set_mode(crtc, fb, mode, x, y)) > goto done; > > The two drmmode_crtc_wait_pending_event invocations can be combined like this: drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd, drmmode_crtc->flip_pending || drmmode_crtc->scanout_update_pending); Okay if I make that modification before pushing? -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer