summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2014-05-05 17:01:14 -0700
committerKeith Packard <keithp@keithp.com>2014-05-12 14:47:06 -0700
commit6dd86f3cba7cca67f3a9102db2e90722d32a34cb (patch)
tree4b1b063ba48eb9d14094027e0e6f2bd7a083f8a6
parentfb24ac0a2c317099bdf7d1d8e4b7c443e3ee644f (diff)
glamor: Don't forget to check whether we can fall back in polysegment.
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 <eric@anholt.net> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--glamor/glamor_segment.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/glamor/glamor_segment.c b/glamor/glamor_segment.c
index 84b27acce..53f7da0cb 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);
}