From 99edbfa0b7d386f32d3e5e72fd3f70ff85d5476a Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 13 Dec 2018 20:47:13 +0100 Subject: [PATCH] There's no point in having Player in export_interpolated_clip() be allocated on the heap. --- futatabi/export.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/futatabi/export.cpp b/futatabi/export.cpp index 3371404..a653f01 100644 --- a/futatabi/export.cpp +++ b/futatabi/export.cpp @@ -228,21 +228,20 @@ void export_interpolated_clip(const string &filename, const Clip &clip) future done = done_promise.get_future(); std::atomic current_value{0.0}; - unique_ptr player(new Player(/*destination=*/nullptr, Player::FILE_STREAM_OUTPUT, closer.release())); - player->set_done_callback([&done_promise] { + Player player(/*destination=*/nullptr, Player::FILE_STREAM_OUTPUT, closer.release()); + player.set_done_callback([&done_promise] { done_promise.set_value(); }); - player->set_progress_callback([¤t_value] (const std::map &player_progress) { + player.set_progress_callback([¤t_value] (const std::map &player_progress) { assert(player_progress.size() == 1); current_value = player_progress.begin()->second; }); - player->play_clip(clip, /*clip_idx=*/0, clip.stream_idx); + player.play_clip(clip, /*clip_idx=*/0, clip.stream_idx); while (done.wait_for(std::chrono::milliseconds(100)) != future_status::ready && !progress.wasCanceled()) { progress.setValue(lrint(100000.0 * current_value)); } if (progress.wasCanceled()) { unlink(filename.c_str()); - player.reset(); - return; + // Destroying player on scope exit will abort the render job. } } -- 2.39.2