diff options
author | Marcin Zawiejski <dragmz@gmail.com> | 2018-02-04 13:23:23 +0100 |
---|---|---|
committer | Marcin Zawiejski <dragmz@gmail.com> | 2018-02-04 13:23:23 +0100 |
commit | 8315aa40ccbb0274d87f7b94ed52aa252e4aa626 (patch) | |
tree | 96ecb48c1b0329a202bedb88c17724c6ad1daef9 | |
parent | ea99b90a77228189d6dc38ab7b7ada967d668ed8 (diff) |
fix buffer write performance on Windows and Unix
-rw-r--r-- | drivers/unix/file_access_unix.cpp | 5 | ||||
-rw-r--r-- | drivers/unix/file_access_unix.h | 1 | ||||
-rw-r--r-- | drivers/windows/file_access_windows.cpp | 5 | ||||
-rw-r--r-- | drivers/windows/file_access_windows.h | 1 |
4 files changed, 12 insertions, 0 deletions
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp index 1ed3999e1e..5b093a5885 100644 --- a/drivers/unix/file_access_unix.cpp +++ b/drivers/unix/file_access_unix.cpp @@ -236,6 +236,11 @@ void FileAccessUnix::store_8(uint8_t p_dest) { ERR_FAIL_COND(fwrite(&p_dest, 1, 1, f) != 1); } +void FileAccessUnix::store_buffer(const uint8_t *p_src, int p_length) { + ERR_FAIL_COND(!f); + ERR_FAIL_COND(fwrite(p_src, 1, p_length, f) != p_length); +} + bool FileAccessUnix::file_exists(const String &p_path) { int err; diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h index 6f792076b8..dbb1c9f3b5 100644 --- a/drivers/unix/file_access_unix.h +++ b/drivers/unix/file_access_unix.h @@ -75,6 +75,7 @@ public: virtual void flush(); virtual void store_8(uint8_t p_dest); ///< store a byte + virtual void store_buffer(const uint8_t *p_src, int p_length); ///< store an array of bytes virtual bool file_exists(const String &p_path); ///< return true if a file exists diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 613dc8c406..072790876f 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -235,6 +235,11 @@ void FileAccessWindows::store_8(uint8_t p_dest) { fwrite(&p_dest, 1, 1, f); } +void FileAccessWindows::store_buffer(const uint8_t *p_src, int p_length) { + ERR_FAIL_COND(!f); + ERR_FAIL_COND(fwrite(p_src, 1, p_length, f) != p_length); +} + bool FileAccessWindows::file_exists(const String &p_name) { FILE *g; diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h index bbdf830c96..26bd08b7af 100644 --- a/drivers/windows/file_access_windows.h +++ b/drivers/windows/file_access_windows.h @@ -67,6 +67,7 @@ public: virtual void flush(); virtual void store_8(uint8_t p_dest); ///< store a byte + virtual void store_buffer(const uint8_t *p_src, int p_length); ///< store an array of bytes virtual bool file_exists(const String &p_name); ///< return true if a file exists |