From: Steinar H. Gunderson Date: Thu, 13 Dec 2018 19:47:13 +0000 (+0100) Subject: There's no point in having Player in export_interpolated_clip() be allocated on the... X-Git-Tag: 1.8.0~25 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=99edbfa0b7d386f32d3e5e72fd3f70ff85d5476a;p=nageru There's no point in having Player in export_interpolated_clip() be allocated on the heap. --- 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. } }