aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libraries/winFang.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2014-05-20 18:25:58 +1000
committerDavid Walter Seikel2014-05-20 18:25:58 +1000
commit315aaabbce6b2db52ff5796708b777b488fd848e (patch)
treeb58c92292cda35e4435b2448d61a654e30580c7d /src/libraries/winFang.c
parentClean up the server startup and connection a bit. (diff)
downloadSledjHamr-315aaabbce6b2db52ff5796708b777b488fd848e.zip
SledjHamr-315aaabbce6b2db52ff5796708b777b488fd848e.tar.gz
SledjHamr-315aaabbce6b2db52ff5796708b777b488fd848e.tar.bz2
SledjHamr-315aaabbce6b2db52ff5796708b777b488fd848e.tar.xz
The results of a session with valgrind.
I'm surprised that this highly experimental code, built with chewing gum and chicken wire, had so little problems, and most of those where leaks. The majority of problems reported are from external libraries.
Diffstat (limited to 'src/libraries/winFang.c')
-rw-r--r--src/libraries/winFang.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libraries/winFang.c b/src/libraries/winFang.c
index b6ceee9..bfd9327 100644
--- a/src/libraries/winFang.c
+++ b/src/libraries/winFang.c
@@ -369,28 +369,29 @@ void winFangCalcMinSize(winFang *win)
369 369
370void winFangDel(winFang *win) 370void winFangDel(winFang *win)
371{ 371{
372 winFang *wf; 372 winFang *wf, *wf2;
373 Widget *wid; 373 Widget *wid, *wid2;
374 374
375 if (!win) return; 375 if (!win) return;
376 376
377 if (win->bg) eo_unref(win->bg); 377 if (win->bg) eo_unref(win->bg);
378 if (win->grid) eo_unref(win->grid); 378 if (win->grid) eo_unref(win->grid);
379 if (win->layout) eo_unref(win->layout); 379 if (win->layout) eo_unref(win->layout);
380 EINA_CLIST_FOR_EACH_ENTRY(wf, &win->winFangs, winFang, node) 380 EINA_CLIST_FOR_EACH_ENTRY_SAFE(wf, wf2, &win->winFangs, winFang, node)
381 { 381 {
382 winFangDel(wf); 382 winFangDel(wf);
383 } 383 }
384 384
385 // Elm will delete our widgets, but if we are using eo, we need to unref them. 385 // Elm will delete our widgets, but if we are using eo, we need to unref them.
386 EINA_CLIST_FOR_EACH_ENTRY(wid, &win->widgets, Widget, node) 386 EINA_CLIST_FOR_EACH_ENTRY_SAFE(wid, wid2, &win->widgets, Widget, node)
387 { 387 {
388 if (wid->on_del) wid->on_del(wid, wid->obj, NULL); 388 if (wid->on_del) wid->on_del(wid, wid->obj, NULL);
389 widgetDel(wid); 389 widgetDel(wid);
390 eo_unref(wid->obj);
391 } 390 }
392 if (win->on_del) win->on_del(win, win->win, NULL); 391 if (win->on_del) win->on_del(win, win->win, NULL);
393 evas_object_del(win->win); 392 evas_object_del(win->win);
393 free(win->module);
394 free(win);
394} 395}
395 396
396 397
@@ -483,10 +484,14 @@ void widgetDel(Widget *wid)
483{ 484{
484 if (wid) 485 if (wid)
485 { 486 {
487 free(wid->action);
488 free(wid->label);
486 // TODO - This is to work around a bug in Elm entry, remove it when the bug is fixed. 489 // TODO - This is to work around a bug in Elm entry, remove it when the bug is fixed.
487 // The bug is that editable entry widgets cause the app to hang on exit. 490 // The bug is that editable entry widgets cause the app to hang on exit.
488 if (strcmp(WT_ENTRY, wid->type) == 0) 491 if (strcmp(WT_ENTRY, wid->type) == 0)
489 elm_entry_editable_set(wid->obj, EINA_FALSE); 492 elm_entry_editable_set(wid->obj, EINA_FALSE);
493 eo_unref(wid->obj);
494 free(wid);
490 } 495 }
491} 496}
492 497