Skip to content

Commit

Permalink
Fix memory leak when deinitializing display feeder tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
vroland committed Apr 30, 2024
1 parent 29b2b19 commit 8cdf001
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/render.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <stdio.h>
#include <string.h>

#include "esp_heap_caps.h"
#include "output_common/line_queue.h"
#include "output_common/lut.h"
#include "output_common/render_context.h"
Expand Down Expand Up @@ -338,6 +339,7 @@ void epd_renderer_deinit() {
for (int i = 0; i < NUM_RENDER_THREADS; i++) {
vTaskDelete(render_context.feed_tasks[i]);
lq_free(&render_context.line_queues[i]);
heap_caps_free(render_context.feed_line_buffers[i]);
vSemaphoreDelete(render_context.feed_done_smphr[i]);
}

Expand All @@ -351,8 +353,8 @@ void epd_renderer_deinit() {
epd_board->deinit();
}

free(render_context.conversion_lut);
free(render_context.line_threads);
heap_caps_free(render_context.conversion_lut);
heap_caps_free(render_context.line_threads);
vSemaphoreDelete(render_context.frame_done);
}

Expand Down
4 changes: 4 additions & 0 deletions test/test_initialization.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include <assert.h>
#include <unity.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
Expand Down Expand Up @@ -35,11 +36,14 @@ TEST_CASE("re-initialization works", "[epdiy,e2e]")

epd_deinit();

int before_init = esp_get_free_internal_heap_size();
epd_init(&TEST_BOARD, &ED097TC2, EPD_OPTIONS_DEFAULT);

epd_poweron();
vTaskDelay(2);
epd_poweroff();

epd_deinit();
int after_init = esp_get_free_internal_heap_size();
TEST_ASSERT_EQUAL(after_init, before_init);
}

0 comments on commit 8cdf001

Please sign in to comment.