summaryrefslogtreecommitdiff
path: root/src/devices/file.rs
diff options
context:
space:
mode:
authorBen Bridle <bridle.benjamin@gmail.com>2024-04-24 16:11:31 +1200
committerBen Bridle <bridle.benjamin@gmail.com>2024-04-24 16:11:31 +1200
commit6acdb1f632bdcbc1332caecb9d5ecd3d0eff36ad (patch)
treec046fce65ed198a2cd431c907a87d38cb6399f52 /src/devices/file.rs
parent34a933ceb404aa710c91cea496140b5fc2672bab (diff)
downloadbedrock-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.rs13
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();
+ }
+}