diff options
author | Olivier Fourdan <ofourdan@redhat.com> | 2017-07-26 16:00:37 +0200 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2017-09-25 15:34:10 -0400 |
commit | 421814bc81ba8dfaa9be59b8b35b3a9114dbcb8b (patch) | |
tree | cc4ecde88f2476ef093766b662a18ee2e4f1a215 /glamor | |
parent | baa25315014af350c9c04c2c83beeee36aead042 (diff) |
glamor: handle NULL source picture
COMPOSITE_REGION() can pass NULL as a source picture, make sure we
handle that nicely in both glamor_composite_clipped_region() and
glamor_composite_choose_shader().
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=101894
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit bd353e9b84e013fc34ed730319d5b63d20977903)
Diffstat (limited to 'glamor')
-rw-r--r-- | glamor/glamor_render.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c index 52f073d05..a8b208101 100644 --- a/glamor/glamor_render.c +++ b/glamor/glamor_render.c @@ -992,7 +992,7 @@ glamor_composite_choose_shader(CARD8 op, goto fail; } } else { - if (!glamor_render_format_is_supported(source->format)) { + if (source && !glamor_render_format_is_supported(source->format)) { glamor_fallback("Unsupported source picture format.\n"); goto fail; } @@ -1411,7 +1411,8 @@ glamor_composite_clipped_region(CARD8 op, x_source, y_source, x_mask, y_mask, x_dest, y_dest, width, height); /* Is the composite operation equivalent to a copy? */ - if (!mask && !source->alphaMap && !dest->alphaMap + if (source && + !mask && !source->alphaMap && !dest->alphaMap && source->pDrawable && !source->transform /* CopyArea is only defined with matching depths. */ && dest->pDrawable->depth == source->pDrawable->depth |