src/via_driver.c | 9 +++++++-- src/via_memmgr.c | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-)
New commits: commit c6fd0017eeafc796124437e7bfc9906433b3f28a Author: Kevin Brace <kevinbr...@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 <kevinbr...@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; } _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel