From 69eed562567e2158219ab249db08b527468c88e1 Mon Sep 17 00:00:00 2001 From: Chris Burgener Date: Tue, 6 Sep 2016 22:45:50 -0400 Subject: [PATCH] Fix recursive code --- Source/Core/VideoCommon/AVIDump.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoCommon/AVIDump.cpp b/Source/Core/VideoCommon/AVIDump.cpp index 1a7183a8e3..cb38026f7d 100644 --- a/Source/Core/VideoCommon/AVIDump.cpp +++ b/Source/Core/VideoCommon/AVIDump.cpp @@ -43,6 +43,7 @@ static int s_width; static int s_height; static u64 s_last_frame; static bool s_start_dumping = false; +static bool s_stop_dumping = false; static u64 s_last_pts; static int s_current_width; static int s_current_height; @@ -85,6 +86,8 @@ bool AVIDump::Start(int w, int h, DumpFormat format) s_last_frame = CoreTiming::GetTicks(); s_last_pts = 0; + s_stop_dumping = false; + InitAVCodec(); bool success = CreateFile(); if (!success) @@ -181,7 +184,8 @@ static void PreparePacket(AVPacket* pkt) void AVIDump::AddFrame(const u8* data, int width, int height) { // Store current frame data in case frame dumping stops before next frame update - StoreFrameData(data, width, height); + if (!s_stop_dumping) + StoreFrameData(data, width, height); CheckResolution(width, height); s_src_frame->data[0] = const_cast(data); s_src_frame->linesize[0] = width * s_bytes_per_pixel; @@ -257,6 +261,7 @@ void AVIDump::AddFrame(const u8* data, int width, int height) void AVIDump::Stop() { + s_stop_dumping = true; // Write the last stored frame just in case frame dumping stops before the next frame update AddFrame(s_stored_frame_data, s_stored_frame_width, s_stored_frame_height); av_write_trailer(s_format_context);