From 3500740dd4b7ca47bd42c34134d887884bdba0f4 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Sat, 14 Feb 2015 23:38:14 +0100 Subject: [PATCH] Windows AVIDump: support "silent" frame dumping When enabled, the silent option will avoid popping up dialog boxes for overwrite confirmation or codec selection. The codec selection defaults to uncompressed RGB. This is required for FifoCI on Windows which needs to drive Dolphin from the command line exclusively. --- Source/Core/Core/ConfigManager.cpp | 2 ++ Source/Core/Core/ConfigManager.h | 1 + Source/Core/VideoCommon/AVIDump.cpp | 16 ++++++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index a619a32436..f52e160404 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -362,6 +362,7 @@ void SConfig::SaveMovieSettings(IniFile& ini) movie->Set("PauseMovie", m_PauseMovie); movie->Set("Author", m_strMovieAuthor); movie->Set("DumpFrames", m_DumpFrames); + movie->Set("DumpFramesSilent", m_DumpFramesSilent); movie->Set("ShowInputDisplay", m_ShowInputDisplay); } @@ -603,6 +604,7 @@ void SConfig::LoadMovieSettings(IniFile& ini) movie->Get("PauseMovie", &m_PauseMovie, false); movie->Get("Author", &m_strMovieAuthor, ""); movie->Get("DumpFrames", &m_DumpFrames, false); + movie->Get("DumpFramesSilent", &m_DumpFramesSilent, false); movie->Get("ShowInputDisplay", &m_ShowInputDisplay, false); } diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index a65aca6b05..249a85f59f 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -100,6 +100,7 @@ struct SConfig : NonCopyable std::string m_strMovieAuthor; unsigned int m_FrameSkip; bool m_DumpFrames; + bool m_DumpFramesSilent; bool m_ShowInputDisplay; // DSP settings diff --git a/Source/Core/VideoCommon/AVIDump.cpp b/Source/Core/VideoCommon/AVIDump.cpp index 1dcbbe4d9c..99c6b0f8e3 100644 --- a/Source/Core/VideoCommon/AVIDump.cpp +++ b/Source/Core/VideoCommon/AVIDump.cpp @@ -88,8 +88,11 @@ bool AVIDump::CreateFile() // Ask to delete file if (File::Exists(movie_file_name)) { - if (AskYesNoT("Delete the existing file '%s'?", movie_file_name.c_str())) + if (SConfig::GetInstance().m_DumpFramesSilent || + AskYesNoT("Delete the existing file '%s'?", movie_file_name.c_str())) + { File::Delete(movie_file_name); + } } AVIFileInit(); @@ -291,7 +294,16 @@ bool AVIDump::SetCompressionOptions() memset(&s_options, 0, sizeof(s_options)); s_array_options[0] = &s_options; - return (AVISaveOptions(s_emu_wnd, 0, 1, &s_stream, s_array_options) != 0); + if (SConfig::GetInstance().m_DumpFramesSilent) + { + s_options.fccType = streamtypeVIDEO; + s_options.fccHandler = mmioFOURCC('D', 'I', 'B', ' '); // Uncompressed + return true; + } + else + { + return (AVISaveOptions(s_emu_wnd, 0, 1, &s_stream, s_array_options) != 0); + } } bool AVIDump::SetVideoFormat()