ltkx

GUI toolkit for X11 (WIP)
git clone git://lumidify.org/ltkx.git
Log | Files | Refs | README | LICENSE

commit 696ff69d34503c5cba0e98287997c089ecd36b18
parent bfc883141ea28d04d8da91fa69dcd0dfeb01b6a0
Author: lumidify <nobody@lumidify.org>
Date:   Mon,  2 Jan 2017 17:13:20 +0100

Add proper clean up functions

Diffstat:
Mltk.c | 21+++++++++++++++++----
Mwindow.c | 6++----
2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/ltk.c b/ltk.c @@ -34,16 +34,29 @@ void ltk_init(const char *theme_path) ltk->window_hash = NULL; } +void ltk_clean_up(void) +{ + LtkWindow *window; + for (window = ltk_global->window_hash; window != NULL; window = window->hh.next) + { + ltk_destroy_window(window); + } + XCloseDisplay(ltk_global->display); + ltk_destroy_theme(ltk_global->theme); + free(ltk_global); +} + void ltk_quit(void) { - printf("CLEAN UP!\n"); - exit(1); + ltk_clean_up(); + exit(0); } void ltk_fatal(const char *msg) { - printf(msg); - ltk_quit(); + fprintf(stderr, msg); + ltk_clean_up(); + exit(1); }; XColor ltk_create_xcolor(const char *hex) diff --git a/window.c b/window.c @@ -84,10 +84,8 @@ LtkWindow *ltk_create_window(const char *title, int x, int y, unsigned int w, un void ltk_destroy_window(LtkWindow *window) { LtkWidget *ptr = window->root_widget; - if (ptr) - { - ptr->destroy(ptr); - } + if (ptr) ptr->destroy(ptr); + XDestroyWindow(ltk_global->display, window->xwindow); free(window); }