[Openchrome-devel] xf86-video-openchrome: src/via_driver.c src/via_memmgr.c
Kevin Brace
kevinbrace at kemper.freedesktop.org
Sat Apr 9 07:55:09 UTC 2016
src/via_driver.c | 9 +++++++--
src/via_memmgr.c | 4 +++-
2 files changed, 10 insertions(+), 3 deletions(-)
New commits:
commit c6fd0017eeafc796124437e7bfc9906433b3f28a
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 9 00:22:51 2016 -0700
Fix for screen resolution change crash and extended screen support
Not checking the validity of an old screen pointer before freeing the
allocated memory was leading to a crash of X.org X Server in most
cases when the screen resolution was changed. With this fix, extended
screen using 2 monitors appears to be working in some cases. This is
a major bug fix.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/src/via_driver.c b/src/via_driver.c
index edede8c..6cc1252 100644
--- a/src/via_driver.c
+++ b/src/via_driver.c
@@ -866,8 +866,12 @@ via_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
if (pVia->KMS && old_fb_id)
drmModeRmFB(fd, old_fb_id);
#endif
- drm_bo_unmap(scrn, old_front);
- drm_bo_free(scrn, old_front);
+
+ if (old_front) {
+ drm_bo_unmap(scrn, old_front);
+ drm_bo_free(scrn, old_front);
+ }
+
return ret;
fail:
@@ -875,6 +879,7 @@ fail:
drm_bo_unmap(scrn, new_front);
drm_bo_free(scrn, new_front);
}
+
scrn->virtualY = old_height;
scrn->virtualX = old_width;
scrn->displayWidth = old_dwidth;
diff --git a/src/via_memmgr.c b/src/via_memmgr.c
index 412f618..b6e2b44 100644
--- a/src/via_memmgr.c
+++ b/src/via_memmgr.c
@@ -219,8 +219,10 @@ drm_bo_unmap(ScrnInfoPtr pScrn, struct buffer_object *obj)
{
VIAPtr pVia = VIAPTR(pScrn);
- if (pVia->directRenderingType == DRI_2)
+ if (pVia->directRenderingType == DRI_2) {
munmap(obj->ptr, obj->size);
+ }
+
obj->ptr = NULL;
}
More information about the Openchrome-devel
mailing list