From: Steinar H. Gunderson Date: Tue, 1 Jan 2019 00:30:58 +0000 (+0100) Subject: Fix some memory leaks on export. X-Git-Tag: 1.8.2~38 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=d3aaa6449bc96989cb435b65c30199772d7ba353 Fix some memory leaks on export. --- diff --git a/futatabi/player.cpp b/futatabi/player.cpp index cebc317..12b1616 100644 --- a/futatabi/player.cpp +++ b/futatabi/player.cpp @@ -506,11 +506,12 @@ Player::Player(JPEGFrameView *destination, Player::StreamOutput stream_output, A Player::~Player() { should_quit = true; + new_clip_changed.notify_all(); + player_thread.join(); + if (video_stream != nullptr) { video_stream->stop(); } - new_clip_changed.notify_all(); - player_thread.join(); } void Player::play(const vector &clips) diff --git a/futatabi/video_stream.cpp b/futatabi/video_stream.cpp index 59ab8bf..8b29794 100644 --- a/futatabi/video_stream.cpp +++ b/futatabi/video_stream.cpp @@ -241,6 +241,30 @@ VideoStream::~VideoStream() if (last_flow_tex != 0) { compute_flow->release_texture(last_flow_tex); } + + for (const unique_ptr &resource : interpolate_resources) { + glUnmapNamedBuffer(resource->pbo); + check_error(); + glDeleteBuffers(1, &resource->pbo); + check_error(); + glDeleteFramebuffers(2, resource->input_fbos); + check_error(); + glDeleteFramebuffers(1, &resource->fade_fbo); + check_error(); + glDeleteTextures(1, &resource->input_tex); + check_error(); + glDeleteTextures(1, &resource->gray_tex); + check_error(); + glDeleteTextures(1, &resource->fade_y_output_tex); + check_error(); + glDeleteTextures(1, &resource->fade_cbcr_output_tex); + check_error(); + glDeleteTextures(1, &resource->cb_tex); + check_error(); + glDeleteTextures(1, &resource->cr_tex); + check_error(); + } + assert(interpolate_resources.size() == num_interpolate_slots); } void VideoStream::start()