We don't do anything in drmmode_set_mode_major() without a mode. Check it at the beginning and may bail out. With that, we can remove one indention level. No functional changes.
Signed-off-by: Daniel Martin <[email protected]> --- hw/xfree86/drivers/modesetting/drmmode_display.c | 165 +++++++++++------------ 1 file changed, 82 insertions(+), 83 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index d8dd4d75f..66cc9c06a 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -597,17 +597,18 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, uint32_t fb_id = 0; drmModeModeInfo kmode; + if (!mode) + return TRUE; + saved_mode = crtc->mode; saved_x = crtc->x; saved_y = crtc->y; saved_rotation = crtc->rotation; - if (mode) { - crtc->mode = *mode; - crtc->x = x; - crtc->y = y; - crtc->rotation = rotation; - } + crtc->mode = *mode; + crtc->x = x; + crtc->y = y; + crtc->rotation = rotation; output_ids = calloc(sizeof(uint32_t), xf86_config->num_output); if (!output_ids) { @@ -615,91 +616,89 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, goto done; } - if (mode) { - for (i = 0; i < xf86_config->num_output; i++) { - xf86OutputPtr output = xf86_config->output[i]; - drmmode_output_private_ptr drmmode_output; + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + drmmode_output_private_ptr drmmode_output; - if (output->crtc != crtc) - continue; + if (output->crtc != crtc) + continue; - drmmode_output = output->driver_private; - if (drmmode_output->output_id == -1) - continue; - output_ids[output_count] = drmmode_output->output_id; - output_count++; - } + drmmode_output = output->driver_private; + if (drmmode_output->output_id == -1) + continue; + output_ids[output_count] = drmmode_output->output_id; + output_count++; + } - if (!xf86CrtcRotate(crtc)) { - goto done; - } - crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green, - crtc->gamma_blue, crtc->gamma_size); + if (!xf86CrtcRotate(crtc)) { + goto done; + } + crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green, + crtc->gamma_blue, crtc->gamma_size); - drmmode_ConvertToKMode(crtc->scrn, &kmode, mode); + drmmode_ConvertToKMode(crtc->scrn, &kmode, mode); - fb_id = drmmode->fb_id; - if (drmmode_crtc->prime_pixmap) { - if (!drmmode->reverse_prime_offload_mode) { - msPixmapPrivPtr ppriv = - msGetPixmapPriv(drmmode, drmmode_crtc->prime_pixmap); - fb_id = ppriv->fb_id; - x = 0; - } else - x = drmmode_crtc->prime_pixmap_x; - y = 0; - } - else if (drmmode_crtc->rotate_fb_id) { - fb_id = drmmode_crtc->rotate_fb_id; - x = y = 0; - } - - if (fb_id == 0) { - ret = drmModeAddFB(drmmode->fd, - pScrn->virtualX, pScrn->virtualY, - pScrn->depth, drmmode->kbpp, - drmmode_bo_get_pitch(&drmmode->front_bo), - drmmode_bo_get_handle(&drmmode->front_bo), - &drmmode->fb_id); - if (ret < 0) { - ErrorF("failed to add fb %d\n", ret); - ret = FALSE; - goto done; - } - fb_id = drmmode->fb_id; - } - - if (drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, - fb_id, x, y, output_ids, output_count, &kmode)) { - xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, - "failed to set mode: %s\n", strerror(errno)); - ret = FALSE; - goto done; + fb_id = drmmode->fb_id; + if (drmmode_crtc->prime_pixmap) { + if (!drmmode->reverse_prime_offload_mode) { + msPixmapPrivPtr ppriv = + msGetPixmapPriv(drmmode, drmmode_crtc->prime_pixmap); + fb_id = ppriv->fb_id; + x = 0; } else - ret = TRUE; + x = drmmode_crtc->prime_pixmap_x; + y = 0; + } + else if (drmmode_crtc->rotate_fb_id) { + fb_id = drmmode_crtc->rotate_fb_id; + x = y = 0; + } - if (crtc->scrn->pScreen) - xf86CrtcSetScreenSubpixelOrder(crtc->scrn->pScreen); - - drmmode_crtc->need_modeset = FALSE; - crtc->funcs->dpms(crtc, DPMSModeOn); - - if (drmmode_crtc->prime_pixmap_back) - drmmode_InitSharedPixmapFlipping(crtc, drmmode); - - /* go through all the outputs and force DPMS them back on? */ - for (i = 0; i < xf86_config->num_output; i++) { - xf86OutputPtr output = xf86_config->output[i]; - drmmode_output_private_ptr drmmode_output; - - if (output->crtc != crtc) - continue; - - drmmode_output = output->driver_private; - if (drmmode_output->output_id == -1) - continue; - output->funcs->dpms(output, DPMSModeOn); + if (fb_id == 0) { + ret = drmModeAddFB(drmmode->fd, + pScrn->virtualX, pScrn->virtualY, + pScrn->depth, drmmode->kbpp, + drmmode_bo_get_pitch(&drmmode->front_bo), + drmmode_bo_get_handle(&drmmode->front_bo), + &drmmode->fb_id); + if (ret < 0) { + ErrorF("failed to add fb %d\n", ret); + ret = FALSE; + goto done; } + fb_id = drmmode->fb_id; + } + + if (drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + fb_id, x, y, output_ids, output_count, &kmode)) { + xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, + "failed to set mode: %s\n", strerror(errno)); + ret = FALSE; + goto done; + } else + ret = TRUE; + + if (crtc->scrn->pScreen) + xf86CrtcSetScreenSubpixelOrder(crtc->scrn->pScreen); + + drmmode_crtc->need_modeset = FALSE; + crtc->funcs->dpms(crtc, DPMSModeOn); + + if (drmmode_crtc->prime_pixmap_back) + drmmode_InitSharedPixmapFlipping(crtc, drmmode); + + /* go through all the outputs and force DPMS them back on? */ + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + drmmode_output_private_ptr drmmode_output; + + if (output->crtc != crtc) + continue; + + drmmode_output = output->driver_private; + if (drmmode_output->output_id == -1) + continue; + output->funcs->dpms(output, DPMSModeOn); } done: -- 2.13.6 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
