Browse Source

fix buffer write performance on Windows and Unix

Marcin Zawiejski 7 years ago
parent
commit
8315aa40cc

+ 5 - 0
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;

+ 1 - 0
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
 

+ 5 - 0
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;

+ 1 - 0
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