summaryrefslogtreecommitdiff
path: root/src/wayclock.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wayclock.cc')
-rw-r--r--src/wayclock.cc34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/wayclock.cc b/src/wayclock.cc
index 3911ca0..d089ea6 100644
--- a/src/wayclock.cc
+++ b/src/wayclock.cc
@@ -59,34 +59,38 @@ int main() {
if (wayc_font_context_init(&fctx) != FONT_CONTEXT_ERROR_NONE)
wayc_panic("Failed to initialize font context");
+ wayc_defer(wayc_font_context_deinit(&fctx));
+
struct eventloop_s loop;
- if (wayc_eventloop_init(&loop, wayc_handle) != EVENTLOOP_ERROR_NONE) {
- wayc_font_context_deinit(&fctx);
+ if (wayc_eventloop_init(&loop, wayc_handle) != EVENTLOOP_ERROR_NONE)
wayc_panic("Failed to initialize event loop");
- }
+
+ wayc_defer(wayc_eventloop_deinit(&loop));
struct graphics_s graphics;
if (wayc_graphics_init(&graphics, &loop.state) != GRAPHICS_ERROR_NONE)
wayc_panic("Failed to initialize graphics");
+ wayc_defer(wayc_graphics_deinit(&graphics));
+
struct window_s window;
- if (wayc_window_init(&window, WAYC_APP_NAME, &loop) != WINDOW_ERROR_NONE) {
- wayc_graphics_deinit(&graphics);
- wayc_eventloop_deinit(&loop);
+ if (wayc_window_init(&window, WAYC_APP_NAME, &loop) != WINDOW_ERROR_NONE)
wayc_panic("Failed to initialize window");
- }
window_id_t winid = wayc_eventloop_register(&loop, &window);
window.id = winid;
+ wayc_defer({
+ wayc_eventloop_unregister(&loop, winid);
+ wayc_window_deinit(&window);
+ });
+
struct renderer_s renderer;
if (wayc_renderer_init(&renderer, &window, &graphics, WAYC_APP_WIDTH,
- WAYC_APP_HEIGHT) != RENDERER_ERROR_NONE) {
- wayc_window_deinit(&window);
- wayc_graphics_deinit(&graphics);
- wayc_eventloop_deinit(&loop);
+ WAYC_APP_HEIGHT) != RENDERER_ERROR_NONE)
wayc_panic("Failed to initialize renderer");
- }
+
+ wayc_defer(wayc_renderer_deinit(&renderer));
wayc_renderer_use(&renderer);
wayc_window_redraw(&window, &loop);
@@ -101,11 +105,5 @@ int main() {
wayc_window_redraw(&window, &loop);
}
- wayc_renderer_deinit(&renderer);
- wayc_window_deinit(&window);
- wayc_graphics_deinit(&graphics);
- wayc_eventloop_deinit(&loop);
-
- wayc_font_context_deinit(&fctx);
return 0;
} \ No newline at end of file