diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2015-02-18 16:01:26 +0200 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2015-02-18 16:01:26 +0200 |
commit | 8beaea6a4c4ec811025530c5ef983baf4a31fc7f (patch) | |
tree | 53a9600cbb653cd1b14668906e6c2fd0cbae4df5 | |
parent | 6fec2ebde8b8cb5c7b7fcc8e13497dc88f8666f0 (diff) | |
download | metacity-8beaea6a4c4ec811025530c5ef983baf4a31fc7f.tar.gz |
compositor: don't use invalid back_pixmap
XCompositeNameWindowPixmap can generate BadMatch error. If this
error is generated then returned pixmap is not valid. Just set
back_pixmap to None in case of error.
-rw-r--r-- | src/compositor/compositor-xrender.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index 213e4f84..054c802f 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -1141,6 +1141,7 @@ get_window_picture (MetaCompWindow *cw) XRenderPictureAttributes pa; XRenderPictFormat *format; Drawable draw; + int error_code; draw = cw->id; @@ -1149,6 +1150,10 @@ get_window_picture (MetaCompWindow *cw) if (cw->back_pixmap == None) cw->back_pixmap = XCompositeNameWindowPixmap (xdisplay, cw->id); + error_code = meta_error_trap_pop_with_return (display, FALSE); + if (error_code != 0) + cw->back_pixmap = None; + if (cw->back_pixmap != None) draw = cw->back_pixmap; @@ -1159,13 +1164,13 @@ get_window_picture (MetaCompWindow *cw) pa.subwindow_mode = IncludeInferiors; + meta_error_trap_push (display); pict = XRenderCreatePicture (xdisplay, draw, format, CPSubwindowMode, &pa); meta_error_trap_pop (display, FALSE); return pict; } - meta_error_trap_pop (display, FALSE); return None; } |