win : Prohibiting auto-rendering, until elm_win is shown.
authorWonsik Jung <sidein@samsung.com>
Thu, 5 Nov 2015 11:37:11 +0000 (20:37 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 5 Nov 2015 11:39:39 +0000 (20:39 +0900)
Summary:
Although elm_win is only created and evas_object_show with elm_win is not called,
evas_rendering works sometimes.
This rendering is not necessary. Because on one is shown and just back buffer is allocated.
This patch is the prohibiting auto-rendering, if elm_win is shown by calling evas_object_show()
It is effective for power consumption and reducing memory.

@fix

Test Plan:
1. elementary_test : checking all menus's working
2. modifed bg_example_02 : updated elm_bg's color by animator without evas_object_show(elm_win)

Reviewers: jpeg, jypark, raster

Reviewed By: raster

Differential Revision: https://phab.enlightenment.org/D3282

src/lib/elm_win.c

index f9d3e84..a1d38cc 100644 (file)
@@ -3826,6 +3826,19 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_
           elm_win_focus_highlight_animate_set(obj, EINA_TRUE);
      }
 
+   //Prohibiting auto-rendering, until elm_win is shown.
+   if (_elm_config->auto_norender_withdrawn)
+     {
+        if (elm_win_withdrawn_get(obj))
+          {
+             if (!evas_object_data_get(obj, "__win_auto_norender"))
+               {
+                  elm_win_norender_push(obj);
+                  evas_object_data_set(obj, "__win_auto_norender", obj);
+               }
+          }
+     }
+
 #ifdef ELM_DEBUG
    Evas_Modifier_Mask mask = evas_key_modifier_mask_get(sd->evas, "Control");
    evas_object_event_callback_add