e_pixmap: manage deleted pixmap hash table for some pixmaps that will be freed soon 41/44541/5 accepted/tizen/mobile/20150723.121324 accepted/tizen/tv/20150723.121344 accepted/tizen/wearable/20150723.121407 submit/tizen/20150723.044444
authorMinJeong Kim <minjjj.kim@samsung.com>
Thu, 23 Jul 2015 05:43:35 +0000 (14:43 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Thu, 23 Jul 2015 06:53:35 +0000 (15:53 +0900)
commitbc0bec0cd37fbd541170d06a06cabbcdd071afa4
treecdaa58aed6bdd0a630aef24af0c6fc070f23a6da
parentbdff14815a4dffa5847bece4232309698e4b1cdc
e_pixmap: manage deleted pixmap hash table for some pixmaps that will be freed soon

when enlightenment try to create new e_pixmap, e_pixmap hash table is checked
first with surface resource id as a hash key. if there is a pixmap data that
was registered by given key, e_pixmap is NOT newly created but its reference
count is just increased.

This mechanism can generate problem when more than two successive surface
resources are allocated same address. enlightenment have delayed free of e_pixmap
because there are a lot of thing to do before the pixmap is freed. so interval
between removal of a e_pixmap for previous surface resource and creation of
e_pixmap for next surface resource can be made. When the interval is
made and latest surface resource is allocated same address with previous
surface resource, latest surface resource fails to create new e_pixmap
and it will use e_pixmap for previous surface and it can cause abuse of
memory.

To fix this problem, hash table for deleted pixmap is newly added.

Change-Id: I54ead4101210e3dda75d03d18a1e3e840dd8813b
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/bin/e_comp_wl.c
src/bin/e_comp_wl_input.c
src/bin/e_pixmap.c
src/bin/e_pixmap.h
src/bin/e_win.c