Hi I am using genlist, I have a "double_label" genlist in my Application:
e_music_playlist_append(Evas_Object *playlist_show, TrackProperties > *properties, int list_id) { Listitem *listitem; > itclass.item_style = "double_label"; itclass.func.label_get = _gl_label_get; itclass.func.icon_get = _gl_icon_get; itclass.func.state_get = _gl_state_get; itclass.func.del = _gl_del; > > listitem = E_MUSIC_NEW(Listitem, 1); listitem->pro = properties; listitem->item = elm_genlist_item_append(playlist_show, &itclass, listitem, NULL/* parent */, ELM_GENLIST_ITEM_NONE, > _list_sel, (int *)list_id/* func data */ ); > /* it will do _gl_label_get two times, but wen we do _gl_label_get in the > second time ,listitem may has been free! */ // free( listitem ); } so, I expected to got two times of call of _gl_label_get: char * _gl_label_get(const void *data, Evas_Object *obj, const char *part) { const Listitem *tit = data; char buf[PATH_MAX]; printf("BUF:%s\n", tit->pro->title); if (!strcmp(part, "elm.text")) { snprintf(buf, sizeof(buf), "%s", tit->pro->title); > } else if (!strcmp(part, "elm.text.sub")) { snprintf(buf, sizeof(buf), "%s", tit->pro->artist); } return strdup(buf); } BUT, i have got four! Breakpoint 1, _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x82523c8 > "elm.text") at e_music_playlist.c:23 23 if (!strcmp(part, "elm.text")) (gdb) bt #0 _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x82523c8 "elm.text") > at e_music_playlist.c:23 #1 0x001893fb in _item_realize (it=0x824e9e0, in=<value optimized out>, > calc=1) at elm_genlist.c:881 #2 0x00189bb1 in _item_block_recalc (itb=<value optimized out>, in=<value > optimized out>, qadd=1, norender=0) at elm_genlist.c:1001 #3 0x0018a2a6 in _queue_proecess (wd=<value optimized out>, norender=<value > optimized out>) at elm_genlist.c:1708 #4 0x0018a494 in _item_queue (wd=0x80b4188, it=<value optimized out>) at > elm_genlist.c:1751 #5 0x0018a7d6 in elm_genlist_item_append (obj=0x80bf588, itc=0x805022c, > data=0x824e9d0, parent=0x0, flags=ELM_GENLIST_ITEM_NONE, func=0x804d640 <_list_sel>, func_data=0x0) at elm_genlist.c:1804 #6 0x0804d62b in e_music_playlist_append (playlist_show=0x80bf588, > properties=0xbffff6e0, list_id=0) at e_music_playlist.c:90 #7 0x0804d23c in _update_track (value=0x80ffb50, user_data=0x0) at > xmms2_callback.c:137 #8 0x0013cdc7 in xmmsc_result_run (res=0x813c9c0, msg=0x811c698) at > ../src/clients/lib/xmmsclient/result.c:437 #9 0x00138788 in xmmsc_ipc_exec_msg (ipc=0x8052a20, msg=0x811c698) at > ../src/clients/lib/xmmsclient/ipc.c:399 #10 0x00137b77 in xmmsc_ipc_io_in_callback (ipc=0x8052a20) at > ../src/clients/lib/xmmsclient/ipc.c:80 #11 0x0013df47 in xmmsc_io_in_handle (c=0x8051080) at > ../src/clients/lib/xmmsclient/xmmsclient.c:511 #12 0x0014f834 in on_fd_data (udata=0x8051080, handler=0x8052ab8) at > ../src/clients/lib/xmmsclient-ecore/xmmsclient-ecore.c:35 #13 0x005834ad in _ecore_main_fd_handlers_call (once_only=0) at > ecore_main.c:699 #14 _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:884 #15 0x00583667 in ecore_main_loop_begin () at ecore_main.c:166 #16 0x00167917 in elm_run () at elm_main.c:1260 #17 0x0804a9a7 in elm_main (argc=1, argv=0xbffff984) at e_music.c:42 #18 0x0804aa8e in main (argc=1, argv=0xbffff984) at e_music.c:67 (gdb) continue Continuing. BUF:Lament for Lost Dreams (snippet) > Breakpoint 1, _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x8252400 > "elm.text.sub") at e_music_playlist.c:23 23 if (!strcmp(part, "elm.text")) (gdb) bt #0 _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x8252400 > "elm.text.sub") at e_music_playlist.c:23 #1 0x001893fb in _item_realize (it=0x824e9e0, in=<value optimized out>, > calc=1) at elm_genlist.c:881 #2 0x00189bb1 in _item_block_recalc (itb=<value optimized out>, in=<value > optimized out>, qadd=1, norender=0) at elm_genlist.c:1001 #3 0x0018a2a6 in _queue_proecess (wd=<value optimized out>, norender=<value > optimized out>) at elm_genlist.c:1708 #4 0x0018a494 in _item_queue (wd=0x80b4188, it=<value optimized out>) at > elm_genlist.c:1751 #5 0x0018a7d6 in elm_genlist_item_append (obj=0x80bf588, itc=0x805022c, > data=0x824e9d0, parent=0x0, flags=ELM_GENLIST_ITEM_NONE, func=0x804d640 <_list_sel>, func_data=0x0) at elm_genlist.c:1804 #6 0x0804d62b in e_music_playlist_append (playlist_show=0x80bf588, > properties=0xbffff6e0, list_id=0) at e_music_playlist.c:90 #7 0x0804d23c in _update_track (value=0x80ffb50, user_data=0x0) at > xmms2_callback.c:137 #8 0x0013cdc7 in xmmsc_result_run (res=0x813c9c0, msg=0x811c698) at > ../src/clients/lib/xmmsclient/result.c:437 #9 0x00138788 in xmmsc_ipc_exec_msg (ipc=0x8052a20, msg=0x811c698) at > ../src/clients/lib/xmmsclient/ipc.c:399 #10 0x00137b77 in xmmsc_ipc_io_in_callback (ipc=0x8052a20) at > ../src/clients/lib/xmmsclient/ipc.c:80 #11 0x0013df47 in xmmsc_io_in_handle (c=0x8051080) at > ../src/clients/lib/xmmsclient/xmmsclient.c:511 #12 0x0014f834 in on_fd_data (udata=0x8051080, handler=0x8052ab8) at > ../src/clients/lib/xmmsclient-ecore/xmmsclient-ecore.c:35 #13 0x005834ad in _ecore_main_fd_handlers_call (once_only=0) at > ecore_main.c:699 #14 _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:884 #15 0x00583667 in ecore_main_loop_begin () at ecore_main.c:166 #16 0x00167917 in elm_run () at elm_main.c:1260 #17 0x0804a9a7 in elm_main (argc=1, argv=0xbffff984) at e_music.c:42 #18 0x0804aa8e in main (argc=1, argv=0xbffff984) at e_music.c:67 (gdb) continue Continuing. BUF:Lament for Lost Dreams (snippet) > Breakpoint 1, _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x824efe8 > "elm.text") at e_music_playlist.c:23 23 if (!strcmp(part, "elm.text")) (gdb) bt #0 _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x824efe8 "elm.text") > at e_music_playlist.c:23 #1 0x001893fb in _item_realize (it=0x824e9e0, in=<value optimized out>, > calc=0) at elm_genlist.c:881 #2 0x0018aba5 in _item_block_position (itb=<value optimized out>, in=<value > optimized out>) at elm_genlist.c:1111 #3 0x0018acea in _pan_calculate (obj=0x80cf6a0) at elm_genlist.c:1396 #4 0x003744ac in evas_call_smarts_calculate (e=0x80928d0) at > evas_object_smart.c:833 #5 0x0039347b in evas_render_updates_internal (e=0x80928d0, > make_updates=208 '\320', do_draw=1 '\001') at evas_render.c:801 #6 0x005c8cd9 in _ecore_evas_x_render (ee=0x8093578) at ecore_evas_x.c:349 #7 0x005bf3ee in _ecore_evas_idle_enter (data=0x0) at ecore_evas.c:48 #8 0x00581e45 in _ecore_idle_enterer_call () at ecore_idle_enterer.c:132 #9 0x005832dd in _ecore_main_loop_iterate_internal (once_only=0) at > ecore_main.c:766 #10 0x00583667 in ecore_main_loop_begin () at ecore_main.c:166 #11 0x00167917 in elm_run () at elm_main.c:1260 #12 0x0804a9a7 in elm_main (argc=1, argv=0xbffff984) at e_music.c:42 #13 0x0804aa8e in main (argc=1, argv=0xbffff984) at e_music.c:67 (gdb) continue Continuing. BUF:�� > > Breakpoint 1, _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x825aec0 > "elm.text.sub") at e_music_playlist.c:23 23 if (!strcmp(part, "elm.text")) (gdb) bt #0 _gl_label_get (data=0x824e9d0, obj=0x80bf588, part=0x825aec0 > "elm.text.sub") at e_music_playlist.c:23 #1 0x001893fb in _item_realize (it=0x824e9e0, in=<value optimized out>, > calc=0) at elm_genlist.c:881 #2 0x0018aba5 in _item_block_position (itb=<value optimized out>, in=<value > optimized out>) at elm_genlist.c:1111 #3 0x0018acea in _pan_calculate (obj=0x80cf6a0) at elm_genlist.c:1396 #4 0x003744ac in evas_call_smarts_calculate (e=0x80928d0) at > evas_object_smart.c:833 #5 0x0039347b in evas_render_updates_internal (e=0x80928d0, > make_updates=208 '\320', do_draw=1 '\001') at evas_render.c:801 #6 0x005c8cd9 in _ecore_evas_x_render (ee=0x8093578) at ecore_evas_x.c:349 #7 0x005bf3ee in _ecore_evas_idle_enter (data=0x0) at ecore_evas.c:48 #8 0x00581e45 in _ecore_idle_enterer_call () at ecore_idle_enterer.c:132 #9 0x005832dd in _ecore_main_loop_iterate_internal (once_only=0) at > ecore_main.c:766 #10 0x00583667 in ecore_main_loop_begin () at ecore_main.c:166 #11 0x00167917 in elm_run () at elm_main.c:1260 #12 0x0804a9a7 in elm_main (argc=1, argv=0xbffff984) at e_music.c:42 #13 0x0804aa8e in main (argc=1, argv=0xbffff984) at e_music.c:67 (gdb) continue Continuing. BUF:�� SO, is it normal to get this? How can I fix the err? I don't want to store all the listitem items in the memory statically. Help me. thanks. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel