From 449a9359bb4e117e6a3864e57ad14a716a8c19ec Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Thu, 19 Mar 2026 23:03:04 -0400 Subject: [PATCH] Add basic memory usage debugging --- src/c/main.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/c/main.c b/src/c/main.c index b526d8f..cc8c823 100644 --- a/src/c/main.c +++ b/src/c/main.c @@ -1,6 +1,9 @@ #include "palette_manip.h" #include +// DEBUG memory usage layer +static TextLayer *s_memory_layer; + // declare general statics static Window *s_main_window; static GFont s_custom_font; @@ -81,6 +84,11 @@ static void update_minute_1() { text_layer_set_text(s_time_layer, s_time_buffer); text_layer_set_text(s_date_layer, s_date_buffer); + + // DEBUG memory usage layer + static char s_memory_buffer[32]; + snprintf(s_memory_buffer, sizeof(s_memory_buffer), "%d/%d", (int)heap_bytes_used(), (int)heap_bytes_free() + (int)heap_bytes_used()); + text_layer_set_text(s_memory_layer, s_memory_buffer); } static void update_minute_30_out_handler(Animation *animation, bool finished, void *context) { @@ -221,6 +229,13 @@ static void main_window_load(Window *window) { layer_set_update_proc(s_time_bar_layer, time_bar_update_proc); text_layer_set_text_alignment(s_date_layer, GTextAlignmentCenter); + // DEBUG memory usage layer + s_memory_layer = text_layer_create(GRect(0, PBL_IF_ROUND_ELSE(220, 190), PBL_IF_ROUND_ELSE(260, 200), 14)); + text_layer_set_background_color(s_memory_layer, GColorClear); + text_layer_set_font(s_memory_layer, fonts_get_system_font(FONT_KEY_GOTHIC_14)); + text_layer_set_text_color(s_memory_layer, GColorWhite); + PBL_IF_ROUND_ELSE(text_layer_set_text_alignment(s_memory_layer, GTextAlignmentCenter), text_layer_set_text_alignment(s_memory_layer, GTextAlignmentLeft)); + // add layers as children to window layer_add_child(window_layer, bitmap_layer_get_layer(s_guy_head_layer)); layer_add_child(window_layer, bitmap_layer_get_layer(s_guy_butt_layer)); @@ -228,16 +243,22 @@ static void main_window_load(Window *window) { layer_add_child(window_layer, text_layer_get_layer(s_time_layer)); layer_add_child(window_layer, text_layer_get_layer(s_date_layer)); layer_add_child(window_layer, bitmap_layer_get_layer(s_bt_layer)); + + // DEBUG memory usage layer + layer_add_child(window_layer, text_layer_get_layer(s_memory_layer)); } -// free memory on Window close; -// this means matching all "_create"'s from main_window_load with "_destroy" +// free memory on Window close static void main_window_unload(Window *window) { bitmap_layer_destroy(s_guy_head_layer); bitmap_layer_destroy(s_guy_butt_layer); text_layer_destroy(s_time_layer); text_layer_destroy(s_date_layer); + layer_destroy(s_time_bar_layer); fonts_unload_custom_font(s_custom_font); + + // DEBUG memory usage layer + text_layer_destroy(s_memory_layer); } static void up_single_click_handler(ClickRecognizerRef recognizer, void *context) { @@ -300,8 +321,7 @@ static void init() { window_set_click_config_provider(s_main_window, (ClickConfigProvider)click_config_provider); } -// free memory on app exit; -// this means matching all "_create"'s from init() with "_destroy" +// free memory on app exit static void deinit() { gbitmap_destroy(s_head_current); gbitmap_destroy(s_butt_current);