diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2020-12-15 15:31:04 +0100 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2021-02-13 01:37:16 +0100 |
commit | ab397460e9f8ea36414eb1b11d76c3e223decdcc (patch) | |
tree | 1d16317a797b0e179443691bb334e035d845fd11 /core | |
parent | 45c6d3c5767f0ebc60ef1334aec5720680191eec (diff) | |
download | redot-engine-ab397460e9f8ea36414eb1b11d76c3e223decdcc.tar.gz |
Expose a `File.flush()` method to scripting
This can be used to ensure a file has its contents saved
even if the project crashes or is killed by the user
(among other use cases).
See discussion in #29075.
Diffstat (limited to 'core')
-rw-r--r-- | core/core_bind.cpp | 6 | ||||
-rw-r--r-- | core/core_bind.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp index f568ee754d..dd99c32fa8 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -1254,6 +1254,11 @@ Error _File::open(const String &p_path, ModeFlags p_mode_flags) { return err; } +void _File::flush() { + ERR_FAIL_COND_MSG(!f, "File must be opened before flushing."); + f->flush(); +} + void _File::close() { if (f) { memdelete(f); @@ -1547,6 +1552,7 @@ void _File::_bind_methods() { ClassDB::bind_method(D_METHOD("open_compressed", "path", "mode_flags", "compression_mode"), &_File::open_compressed, DEFVAL(0)); ClassDB::bind_method(D_METHOD("open", "path", "flags"), &_File::open); + ClassDB::bind_method(D_METHOD("flush"), &_File::flush); ClassDB::bind_method(D_METHOD("close"), &_File::close); ClassDB::bind_method(D_METHOD("get_path"), &_File::get_path); ClassDB::bind_method(D_METHOD("get_path_absolute"), &_File::get_path_absolute); diff --git a/core/core_bind.h b/core/core_bind.h index 44e620085a..7f945a9314 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -386,6 +386,7 @@ public: Error open_compressed(const String &p_path, ModeFlags p_mode_flags, CompressionMode p_compress_mode = COMPRESSION_FASTLZ); Error open(const String &p_path, ModeFlags p_mode_flags); // open a file. + void flush(); // Flush a file (write its buffer to disk). void close(); // Close a file. bool is_open() const; // True when file is open. |