diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2024-04-24 16:11:31 +1200 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2024-04-24 16:11:31 +1200 |
commit | 6acdb1f632bdcbc1332caecb9d5ecd3d0eff36ad (patch) | |
tree | c046fce65ed198a2cd431c907a87d38cb6399f52 /src/devices/file.rs | |
parent | 34a933ceb404aa710c91cea496140b5fc2672bab (diff) | |
download | bedrock-pc-6acdb1f632bdcbc1332caecb9d5ecd3d0eff36ad.zip |
Flush file contents each frame and when closing the file
Diffstat (limited to 'src/devices/file.rs')
-rw-r--r-- | src/devices/file.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/devices/file.rs b/src/devices/file.rs index 163c10d..d35acf9 100644 --- a/src/devices/file.rs +++ b/src/devices/file.rs @@ -53,10 +53,17 @@ impl FileDevice { } } + pub fn flush_entry(&mut self) { + if let Some((Entry::File(buffered_file), _)) = &mut self.entry { + buffered_file.flush(); + } + } + pub fn close_entry(&mut self) { self.open_buffer.clear(); self.move_buffer.clear(); self.name_buffer.clear(); + self.flush_entry(); self.entry = None; self.new_pointer = 0; self.new_length = 0; @@ -255,3 +262,9 @@ impl FileDevice { } } } + +impl Drop for FileDevice { + fn drop(&mut self) { + self.close_entry(); + } +} |