summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2022-06-26 02:56:31 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2022-11-01 00:02:55 +0100
commit264ce15a8312497ec038d920246f1aaf7b505175 (patch)
tree2f62833841e7a9609edea9c62ce1cac7f65553af
parentc29fe310f1b782cbf588ccf7040cf1606eba6769 (diff)
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.
-rw-r--r--servers/movie_writer/movie_writer.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/servers/movie_writer/movie_writer.cpp b/servers/movie_writer/movie_writer.cpp
index 2164dca29e..0edce4ced6 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<String> *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<DirAccess> 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()));