force a software render in all cases when finalizing x11 client iconify

since ICCCM requires that clients be unmapped while iconified, it's necessary
for the compositor to perform one last render prior to the unmap in order to
ensure that mirror objects will still appear as expected. this render must use
the pixmap buffer data in order to avoid timing issues due to async/deferred
rendering, and it is only necessary for the case of clients rendering with a
native surface

fix T2788
This commit is contained in:
Mike Blumenkrantz 2015-10-15 15:33:28 -04:00
parent 06f794bfe6
commit 1a87463083
1 changed files with 5 additions and 0 deletions

View File

@ -2169,6 +2169,11 @@ _e_comp_smart_hide(Evas_Object *obj)
evas_object_focus_set(cw->ec->frame, 0);
e_comp_render_queue(); //force nocomp recheck
e_comp_shape_queue();
if ((!cw->ec->iconic) || (!e_pixmap_is_x(cw->ec->pixmap)) || (!cw->native)) return;
e_comp_object_native_surface_set(obj, 0);
e_comp_object_damage(obj, 0, 0, cw->w, cw->h);
e_comp_object_dirty(obj);
e_comp_object_render(obj);
}
static void