diff options
author | Stephen Chandler Paul <cpaul@redhat.com> | 2015-11-11 18:10:55 +0900 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2015-11-19 17:20:23 +0900 |
commit | d069ec5d27f5c8d2ab17b759b85293ef4113acf3 (patch) | |
tree | 9059c01136a54bad54d3be28481d76913f05d9da /src | |
parent | c8bddcf6c97b1338be3715f1fc5e0b17ce71c195 (diff) |
Handle failures in setting a CRTC to a DRM mode properly
This fixes a bug where running the card out of PPLL's when hotplugging
another monitor would result in all of the displays going blank and
failing to work properly until X was restarted or the user switched to
another VT.
[Michel Dänzer: Pass errno instead of -ret to strerror()]
Signed-off-by: Stephen Chandler Paul <cpaul@redhat.com>
(ported from radeon commit 7186a8713ba004de4991f21c1a9fc4abc62aeff4)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/drmmode_display.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 66528f0..2761513 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -699,14 +699,15 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, amdgpu_glamor_finish(pScrn); } } - ret = - drmModeSetCrtc(pAMDGPUEnt->fd, - drmmode_crtc->mode_crtc->crtc_id, fb_id, x, - y, output_ids, output_count, &kmode); - if (ret) + if (drmModeSetCrtc(pAMDGPUEnt->fd, + drmmode_crtc->mode_crtc->crtc_id, + fb_id, x, y, output_ids, + output_count, &kmode) != 0) { xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, - "failed to set mode: %s", strerror(-ret)); - else + "failed to set mode: %s\n", strerror(errno)); + ret = FALSE; + goto done; + } else ret = TRUE; if (crtc->scrn->pScreen) |