removing ec from post_updates list when deleted. 65/48065/3 tizen_3.0.m1_mobile tizen_3.0.m1_tv accepted/tizen/mobile/20150914.043103 accepted/tizen/mobile/20150914.123255 accepted/tizen/tv/20150914.043108 accepted/tizen/tv/20150914.123318 accepted/tizen/wearable/20150914.043119 accepted/tizen/wearable/20150914.123341 submit/tizen/20150914.005307 submit/tizen/20150914.121932 submit/tizen_common/20151023.083358 submit/tizen_common/20151026.085049 tizen_3.0.m1_mobile_release tizen_3.0.m1_tv_release
authorBoram Park <boram1288.park@samsung.com>
Sat, 12 Sep 2015 09:43:30 +0000 (18:43 +0900)
committerBoram Park <boram1288.park@samsung.com>
Sat, 12 Sep 2015 10:30:05 +0000 (19:30 +0900)
    When ec's ref_count is 0, _e_client_free() is called. However,
    e_comp->post_updates has the reference of ec. So it doens't make
    sense that _e_client_free calls e_comp_post_update_purge. To make
    ec's ref_count 0, we should call e_comp_post_update_purge first.
    Furthermore, we call e_comp_object_render_update_del(ec->frame)
    in _e_client_del. So _e_client_del seems the proper position to
    call e_comp_post_update_purge

Change-Id: I906101300dec08f7bf18f18428443efa47f7afec

src/bin/e_client.c

index 202c5c969e27def5b58616fb891e7ad935b195b5..336da45d7fe291c18f83d192038c0ae260721f04 100644 (file)
@@ -745,8 +745,6 @@ _e_client_revert_focus(E_Client *ec)
 static void
 _e_client_free(E_Client *ec)
 {
-   e_comp_post_update_purge(ec);
-
    e_comp_object_redirected_set(ec->frame, 0);
    e_comp_object_render_update_del(ec->frame);
 
@@ -940,6 +938,7 @@ _e_client_del(E_Client *ec)
    eina_hash_del_by_key(clients_hash, &ec->pixmap);
    ec->comp->clients = eina_list_remove(ec->comp->clients, ec);
    e_comp_object_render_update_del(ec->frame);
+   e_comp_post_update_purge(ec);
    if (e_pixmap_free(ec->pixmap))
      e_pixmap_client_set(ec->pixmap, NULL);
    ec->pixmap = NULL;