diff options
Diffstat (limited to 'src/i830_driver.c')
-rw-r--r-- | src/i830_driver.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c index d1acaa56..8986368e 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -926,6 +926,7 @@ i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) i830_memory *new_front, *old_front; Bool tiled; ScreenPtr screen = screenInfo.screens[scrn->scrnIndex]; + pointer data = NULL; scrn->displayWidth = i830_pad_drawable_width(width, i830->cpp); tiled = i830_tiled_width(i830, &scrn->displayWidth, i830->cpp); @@ -945,9 +946,15 @@ i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) i830_set_pixmap_bo(screen->GetScreenPixmap(screen), new_front->bo); scrn->fbOffset = i830->front_buffer->offset; + if (!new_front->bo) + data = i830->FbBase + scrn->fbOffset; screen->ModifyPixmapHeader(screen->GetScreenPixmap(screen), width, height, -1, -1, scrn->displayWidth * i830->cpp, - NULL); + data); + /* ick. xf86EnableDisableFBAccess smashes the screen pixmap devPrivate, + * so update the value it uses + */ + scrn->pixmapPrivate.ptr = data; xf86DrvMsg(scrn->scrnIndex, X_INFO, "New front buffer at 0x%lx\n", i830->front_buffer->offset); i830_set_new_crtc_bo(scrn); |