diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-10-22 22:52:14 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-10-22 22:52:14 +0300 |
commit | 0b02230935e4cc71d4cae3758b25d83be798cdd6 (patch) | |
tree | ec8e9aa55af12baa1cf7946b35ea5db655c858cf /lib | |
parent | 014c20099d0199445cedc6e3504e4309176c56ae (diff) | |
download | bemenu-0b02230935e4cc71d4cae3758b25d83be798cdd6.tar.gz bemenu-0b02230935e4cc71d4cae3758b25d83be798cdd6.tar.bz2 bemenu-0b02230935e4cc71d4cae3758b25d83be798cdd6.zip |
Call constructor of activated renderer.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal.h | 2 | ||||
-rw-r--r-- | lib/library.c | 7 | ||||
-rw-r--r-- | lib/renderers/curses/curses.c | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/internal.h b/lib/internal.h index dd232d2..d632d41 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -37,7 +37,7 @@ struct render_api { /** * Create underlying renderer. */ - void (*constructor)(void); + bool (*constructor)(void); /** * Release underlying renderer. diff --git a/lib/library.c b/lib/library.c index 6544086..e06fda2 100644 --- a/lib/library.c +++ b/lib/library.c @@ -76,7 +76,14 @@ bm_renderer_activate(struct bm_renderer *renderer) if (!load(renderer->file, renderer)) return false; + if (!renderer->api.constructor()) + goto fail; + return true; + +fail: + chckDlUnload(renderer->handle); + return false; } bool diff --git a/lib/renderers/curses/curses.c b/lib/renderers/curses/curses.c index 0ba763e..2591446 100644 --- a/lib/renderers/curses/curses.c +++ b/lib/renderers/curses/curses.c @@ -350,7 +350,7 @@ destructor(void) memset(&curses, 0, sizeof(curses)); } -static void +static bool constructor(void) { memset(&curses, 0, sizeof(curses)); @@ -363,6 +363,7 @@ constructor(void) action.sa_handler = resize_handler; sigaction(SIGWINCH, &action, &curses.winch_action); + return true; } extern const char* |