Revert "subsurface: remove below_obj when it becomes useless." 48/239048/1 accepted/tizen/unified/20200721.142218 submit/tizen/20200721.101335
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 21 Jul 2020 09:44:37 +0000 (18:44 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Tue, 21 Jul 2020 09:45:41 +0000 (18:45 +0900)
This reverts commit 8e58cf4ebf8aac359878df727049d07d9b365fdb.

Change-Id: Ia23aa0d1364ee73aacce67ed2bbe88e282c96431

src/bin/e_comp_wl_subsurface.c

index bfce3eed09bd2875b376ee33b170dea99a99aa53..103316aa0979edc6c4219dd96e91d12f8e14bf90 100644 (file)
@@ -130,63 +130,51 @@ _e_comp_wl_subsurface_check_below_bg_rectangle(E_Client *ec)
          return;
      }
 
-   if (!ec->comp_data->sub.below_obj)
-     {
-        if (ec->comp_data->sub.below_list ||
-            ec->comp_data->sub.below_list_pending ||
-            _e_comp_wl_subsurface_video_has(ec))
-          {
-             /* create a bg rectangle if topmost window is 24 depth window */
-             ec->comp_data->sub.below_obj = evas_object_rectangle_add(e_comp->evas);
-             EINA_SAFETY_ON_NULL_RETURN(ec->comp_data->sub.below_obj);
-
-             ELOGF("COMP", "         |bg_rectangle(%p) created", ec, ec->comp_data->sub.below_obj);
-
-             layer = evas_object_layer_get(ec->frame);
-             evas_object_layer_set(ec->comp_data->sub.below_obj, layer);
-             evas_object_render_op_set(ec->comp_data->sub.below_obj, EVAS_RENDER_COPY);
-
-             /* It's more reasonable to use the transparent color instead of black because
-              * we can show the alpha value of the 24 depth topmost window.
-              */
-             evas_object_color_set(ec->comp_data->sub.below_obj, 0x00, 0x00, 0x00, 0x00);
-             evas_object_move(ec->comp_data->sub.below_obj, ec->x, ec->y);
-             evas_object_resize(ec->comp_data->sub.below_obj, ec->w, ec->h);
-             evas_object_name_set(ec->comp_data->sub.below_obj, "below_bg_rectangle");
-
-             evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE,
-                                            _e_comp_wl_subsurface_bg_evas_cb_resize, ec);
-
-             /* set alpha only if SW path */
-             e_comp_object_alpha_set(ec->frame, EINA_TRUE);
-
-             /* force update for changing alpha value. if the native surface has been already
-              * set before, changing alpha value can't be applied to egl image.
-              */
-             e_comp_object_native_surface_set(ec->frame, EINA_FALSE);
-             e_pixmap_image_refresh(ec->pixmap);
-             e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-             e_comp_object_dirty(ec->frame);
-             e_comp_object_render(ec->frame);
-
-             _e_comp_wl_subsurface_restack(ec);
-             _e_comp_wl_subsurface_restack_bg_rectangle(ec);
-
-             if (evas_object_visible_get(ec->frame))
-               evas_object_show(ec->comp_data->sub.below_obj);
-
-             e_client_transform_core_update(ec);
-          }
-     }
-   else
+   if ((!ec->comp_data->sub.below_obj) &&
+       (ec->comp_data->sub.below_list ||
+        ec->comp_data->sub.below_list_pending ||
+        _e_comp_wl_subsurface_video_has(ec)))
      {
-        /* 'below_obj' has to be removed if it becomes useless. */
-        if ((!ec->comp_data->sub.below_list) &&
-            (!ec->comp_data->sub.below_list_pending) &&
-            (!_e_comp_wl_subsurface_video_has(ec)))
-          {
-             E_FREE_FUNC(ec->comp_data->sub.below_obj, evas_object_del);
-          }
+        /* create a bg rectangle if topmost window is 24 depth window */
+        ec->comp_data->sub.below_obj = evas_object_rectangle_add(e_comp->evas);
+        EINA_SAFETY_ON_NULL_RETURN(ec->comp_data->sub.below_obj);
+
+        ELOGF("COMP", "         |bg_rectangle(%p) created", ec, ec->comp_data->sub.below_obj);
+
+        layer = evas_object_layer_get(ec->frame);
+        evas_object_layer_set(ec->comp_data->sub.below_obj, layer);
+        evas_object_render_op_set(ec->comp_data->sub.below_obj, EVAS_RENDER_COPY);
+
+        /* It's more reasonable to use the transparent color instead of black because
+         * we can show the alpha value of the 24 depth topmost window.
+         */
+        evas_object_color_set(ec->comp_data->sub.below_obj, 0x00, 0x00, 0x00, 0x00);
+        evas_object_move(ec->comp_data->sub.below_obj, ec->x, ec->y);
+        evas_object_resize(ec->comp_data->sub.below_obj, ec->w, ec->h);
+        evas_object_name_set(ec->comp_data->sub.below_obj, "below_bg_rectangle");
+
+        evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE,
+                                       _e_comp_wl_subsurface_bg_evas_cb_resize, ec);
+
+        /* set alpha only if SW path */
+        e_comp_object_alpha_set(ec->frame, EINA_TRUE);
+
+        /* force update for changing alpha value. if the native surface has been already
+         * set before, changing alpha value can't be applied to egl image.
+         */
+        e_comp_object_native_surface_set(ec->frame, EINA_FALSE);
+        e_pixmap_image_refresh(ec->pixmap);
+        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+        e_comp_object_dirty(ec->frame);
+        e_comp_object_render(ec->frame);
+
+        _e_comp_wl_subsurface_restack(ec);
+        _e_comp_wl_subsurface_restack_bg_rectangle(ec);
+
+        if (evas_object_visible_get(ec->frame))
+          evas_object_show(ec->comp_data->sub.below_obj);
+
+        e_client_transform_core_update(ec);
      }
 }