[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