Part of the _nf contract is that glamor will only return FALSE if
glamor has checked that UXA can actually map the pixmaps (UXA only
allocates the BO itself in the screen pixmap and DRI2 cases, and can't
map it otherwise).  Fixes server segfaults zooming in and out of
libreoffice spreadsheets.

Signed-off-by: Eric Anholt <e...@anholt.net>
Reviewed-by: Keith Packard <kei...@keithp.com>
---
 glamor/glamor_segment.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/glamor/glamor_segment.c b/glamor/glamor_segment.c
index 84b27ac..53f7da0 100644
--- a/glamor/glamor_segment.c
+++ b/glamor/glamor_segment.c
@@ -26,14 +26,19 @@ Bool
 glamor_poly_segment_nf(DrawablePtr drawable, GCPtr gc, int nseg,
                        xSegment *seg)
 {
-    return FALSE;
+    if (glamor_ddx_fallback_check_pixmap(drawable) &&
+        glamor_ddx_fallback_check_gc(gc)) {
+        return FALSE;
+    }
+
+    miPolySegment(drawable, gc, nseg, seg);
+
+    return TRUE;
 }
 
 void
 glamor_poly_segment(DrawablePtr drawable, GCPtr gc, int nseg,
                     xSegment *seg)
 {
-    if (glamor_poly_segment_nf(drawable, gc, nseg, seg))
-        return;
     miPolySegment(drawable, gc, nseg, seg);
 }
-- 
1.9.2

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to