From 264ce15a8312497ec038d920246f1aaf7b505175 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 26 Jun 2022 02:56:31 +0200 Subject: [PATCH] Warn if available disk space is low when Movie Maker mode is enabled Saving movies can require a lot of disk space, and running out of disk space may cause the entire recording to have to be redone. This also prints a message on startup to state that Movie Maker mode is enabled, along with the requested framerate. Since Movie Maker mode forces non-real-time simulation, it's important to know that it is enabled when starting the project. --- servers/movie_writer/movie_writer.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/servers/movie_writer/movie_writer.cpp b/servers/movie_writer/movie_writer.cpp index 2164dca29e1..0edce4ced62 100644 --- a/servers/movie_writer/movie_writer.cpp +++ b/servers/movie_writer/movie_writer.cpp @@ -105,6 +105,21 @@ void MovieWriter::get_supported_extensions(List *r_extensions) const { void MovieWriter::begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) { project_name = GLOBAL_GET("application/config/name"); + + print_line(vformat("Movie Maker mode enabled, recording movie at %d FPS...", p_fps)); + + // Check for available disk space and warn the user if needed. + Ref dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + String path = p_base_path.get_basename(); + if (path.is_relative_path()) { + path = "res://" + path; + } + dir->open(path); + if (dir->get_space_left() < 10 * Math::pow(1024.0, 3.0)) { + // Less than 10 GiB available. + WARN_PRINT(vformat("Current available space on disk is low (%s). MovieWriter will fail during movie recording if the disk runs out of available space.", String::humanize_size(dir->get_space_left()))); + } + mix_rate = get_audio_mix_rate(); AudioDriverDummy::get_dummy_singleton()->set_mix_rate(mix_rate); AudioDriverDummy::get_dummy_singleton()->set_speaker_mode(AudioDriver::SpeakerMode(get_audio_speaker_mode()));