e_comp_object: update comp_object when it is shown 36/245336/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 7 Oct 2020 07:16:06 +0000 (16:16 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 7 Oct 2020 09:17:52 +0000 (18:17 +0900)
if comp object is shown in idle enterer before(E_CLIENT_HOOK_EVAL_FETCH),
it is rendered in idle callback without native surface and
compositor shows an empty frame if other objects aren't shown
because job callback of e_comp called at the next loop.
it causes a visual defect when windows are switched.

Change-Id: I336f5bb0ec941fbd23407a1c7488de25c96a0766

src/bin/e_comp_object.c

index 883a5e1fff86d7ccd02db1064327f1d80a83e9af..19b236c635907057ac34c3b1a9bd1dc85ac293bd 100644 (file)
@@ -2433,6 +2433,20 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
           {
              ELOGF("COMP", "show_helper. evas_object_show!!!", ec);
              evas_object_show(cw->smart_obj);
+
+             /* if comp object is shown in idle enterer before(E_CLIENT_HOOK_EVAL_FETCH),
+                it is rendered in idle callback without native surface and
+                compositor shows an empty frame if other objects aren't shown
+                because job callback of e_comp called at the next loop.
+                it causes a visual defect when windows are switched.
+              */
+             if (cw->redirected)
+               {
+                  e_comp_object_damage(cw->smart_obj, 0, 0, cw->w, cw->h);
+                  e_comp_object_dirty(cw->smart_obj);
+                  e_comp_object_render(cw->smart_obj);
+               }
+
              if (!ec->iconic ||
                  e_policy_visibility_client_is_uniconic(ec))
                {