Mesa (master): st/dri: fix crash when dri2_drawable_get_buffers fails

Marek Olšák mareko at kemper.freedesktop.org
Tue Aug 3 22:16:06 UTC 2010


Module: Mesa
Branch: master
Commit: afbf446de5ad91743e2e2a76799bd87f3eed5f9a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=afbf446de5ad91743e2e2a76799bd87f3eed5f9a

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Jul 31 02:19:27 2010 +0200

st/dri: fix crash when dri2_drawable_get_buffers fails

It's easily reproducible with Compiz with its Resize window mode
set to Normal (which is usually not the default mode).

https://bugs.freedesktop.org/show_bug.cgi?id=28658
https://bugs.freedesktop.org/show_bug.cgi?id=29303

This is actually a workaround to prevent Compiz crashes.
Instead, a completely white titlebar might show up during resizing
transparent windows (a rare case).

The underlying cause should be fixed by someone who has more knowledge
about the code. (dri2_drawable_get_buffers should not return NULL)

Acked-By: Jakob Bornecrantz <jakob at vmware.com>

---

 src/gallium/state_trackers/dri/drm/dri2.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 88ffa1e..1fb8996 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -351,7 +351,8 @@ dri2_allocate_textures(struct dri_drawable *drawable,
    unsigned num_buffers = count;
 
    buffers = dri2_drawable_get_buffers(drawable, statts, &num_buffers);
-   dri2_drawable_process_buffers(drawable, buffers, num_buffers);
+   if (buffers)
+      dri2_drawable_process_buffers(drawable, buffers, num_buffers);
 }
 
 static void




More information about the mesa-commit mailing list