elm win: fix window redraw if norender is enabled on withdrawn windows 62/59862/2
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 18 Feb 2016 09:15:00 +0000 (18:15 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Fri, 19 Feb 2016 05:19:03 +0000 (21:19 -0800)
we dont set this config by default so we dont see this - but a window
starts as withdrawn then becomes normal. this means the window starts
not rendering and may take 0.5 seconds to START because the eval is
deferred by 0.5 sec to avoid rapid switch to/from norender and other
states.

@fix

Change-Id: I7342bd9e6d489268108a0d28eaba262d82b1973e

src/lib/elm_win.c

index 4defc61..2d9b762 100644 (file)
@@ -1650,9 +1650,9 @@ _elm_win_evas_object_smart_show(Eo *obj, Elm_Win_Data *sd)
    if (sd->modal_count) return;
    const Eina_List *l;
    Evas_Object *current;
+   Eina_Bool do_eval = EINA_FALSE;
 
-   if (!evas_object_visible_get(obj))
-     _elm_win_state_eval_queue();
+   if (!evas_object_visible_get(obj)) do_eval = EINA_TRUE;
    eo_do_super(obj, MY_CLASS, evas_obj_smart_show());
 
    if ((sd->modal) && (!evas_object_visible_get(obj)))
@@ -1672,6 +1672,15 @@ _elm_win_evas_object_smart_show(Eo *obj, Elm_Win_Data *sd)
            elm_interface_atspi_accessible_children_changed_added_signal_emit(elm_atspi_bridge_root_get(bridge), obj);
      }
 
+   if (do_eval)
+     {
+        if (_elm_win_state_eval_timer)
+          {
+             ecore_timer_del(_elm_win_state_eval_timer);
+             _elm_win_state_eval_timer = NULL;
+          }
+        _elm_win_state_eval(NULL);
+     }
    if (sd->shot.info) _shot_handle(sd);
 }