diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2018-02-14 00:29:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-14 00:29:49 +0100 |
commit | 569431585cc65f2d485820db0f7e628498410912 (patch) | |
tree | 3873327cca737b9159ad0e98391f715fe5996055 | |
parent | c2d8960c9c75337435e29b9ca543b30df19dc8e7 (diff) | |
parent | 8315aa40ccbb0274d87f7b94ed52aa252e4aa626 (diff) |
Merge pull request #16385 from dragmz/buf_write_perf
fix buffer write performance
-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 |