modesetting: fix shadow resizing.

if we hotplugged and output, the shadow got disabled by accident.

Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie 2012-02-20 11:05:59 +00:00
parent f3b9e52b29
commit c5529d68c5

View File

@ -984,8 +984,21 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
if (!new_pixels)
goto fail;
screen->ModifyPixmapHeader(ppix, width, height, -1, -1,
pitch, new_pixels);
if (!drmmode->shadow_enable)
screen->ModifyPixmapHeader(ppix, width, height, -1, -1,
pitch, new_pixels);
else {
void *new_shadow;
uint32_t size = scrn->displayWidth * scrn->virtualY *
((scrn->bitsPerPixel + 7) >> 3);
new_shadow = calloc(1, size);
if (new_shadow == NULL)
goto fail;
free(drmmode->shadow_fb);
drmmode->shadow_fb = new_shadow;
screen->ModifyPixmapHeader(ppix, width, height, -1, -1,
pitch, drmmode->shadow_fb);
}
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,9,99,1,0)
scrn->pixmapPrivate.ptr = ppix->devPrivate.ptr;