st/dri: fix crash when dri2_drawable_get_buffers fails
authorMarek Olšák <maraeo@gmail.com>
Sat, 31 Jul 2010 00:19:27 +0000 (02:19 +0200)
committerMarek Olšák <maraeo@gmail.com>
Tue, 3 Aug 2010 22:07:28 +0000 (00:07 +0200)
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@vmware.com>
src/gallium/state_trackers/dri/drm/dri2.c

index 88ffa1e89d30294774bd5e2294cb9d74cbcf0cc8..1fb89963371b0eef0d2a43c52b2aaebf852e5ad9 100644 (file)
@@ -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