Jelajahi Sumber

thread fixed, os file fixed

mikymod 12 tahun lalu
induk
melakukan
967c789e54
5 mengubah file dengan 21 tambahan dan 19 penghapusan
  1. 3 3
      src/Device.cpp
  2. 1 1
      src/os/win/Cond.cpp
  3. 1 1
      src/os/win/Mutex.cpp
  4. 15 13
      src/os/win/OsFile.cpp
  5. 1 1
      src/os/win/WinOS.cpp

+ 3 - 3
src/Device.cpp

@@ -145,9 +145,9 @@ bool Device::init(int argc, char** argv)
 		return false;
 	}
 
-	*(void**)(&game_init) = os::lookup_symbol(m_game_library, "init");
-	*(void**)(&game_shutdown) = os::lookup_symbol(m_game_library, "shutdown");
-	*(void**)(&game_frame) = os::lookup_symbol(m_game_library, "frame");
+	*(void**)(&game_init) = os::lookup_symbol(m_game_library, "init_1");
+	*(void**)(&game_shutdown) = os::lookup_symbol(m_game_library, "shutdown_1");
+	*(void**)(&game_frame) = os::lookup_symbol(m_game_library, "frame_1");
 
 	// Initialize the game
 	game_init();

+ 1 - 1
src/os/win/Cond.cpp

@@ -48,7 +48,7 @@ void Cond::signal()
 
 void Cond::wait(Mutex& mutex)
 {
-	SleepConditionVariableCS(&m_cond, &mutex.m_cs, 5000);
+	SleepConditionVariableCS(&m_cond, &mutex.m_cs, INFINITE);
 }
 
 } // namespace os

+ 1 - 1
src/os/win/Mutex.cpp

@@ -47,7 +47,7 @@ Mutex::~Mutex()
 //-----------------------------------------------------------------------------
 void Mutex::lock()
 {
-    TryEnterCriticalSection(&m_cs); 
+    EnterCriticalSection(&m_cs); 
 }
 
 //-----------------------------------------------------------------------------

+ 15 - 13
src/os/win/OsFile.cpp

@@ -26,6 +26,8 @@ OTHER DEALINGS IN THE SOFTWARE.
 
 #include "OsFile.h"
 #include "Assert.h"
+#include "OS.h"
+#include "tchar.h"
 
 namespace crown
 {
@@ -35,13 +37,13 @@ OsFile::OsFile(const char* path, FileOpenMode mode) :
 {
 	m_file_handle = CreateFile(path,
 							   mode == FOM_READ ? GENERIC_READ : GENERIC_WRITE,
-							   FILE_SHARE_READ | FILE_SHARE_WRITE,
+							   0,
 							   NULL,
-							   OPEN_EXISTING,
+							   OPEN_ALWAYS,
         					   FILE_ATTRIBUTE_NORMAL,
         					   NULL);
 
-	CE_ASSERT(m_file_handle != NULL || m_file_handle != INVALID_HANDLE_VALUE, "Unable to open file: %s", path);
+	CE_ASSERT(m_file_handle != INVALID_HANDLE_VALUE, "Unable to open file: %s", path);
 
 	m_mode = mode;
 }
@@ -84,15 +86,15 @@ size_t OsFile::read(void* data, size_t size)
 	DWORD bytes_read;
 	
 	BOOL result = ReadFile(m_file_handle, data, size, &bytes_read, NULL);
-	
-	CE_ASSERT(size == bytes_read, "Cannot read from file\n");
+
+	CE_ASSERT(result == TRUE, "Unable to read from file");
 
 	if (result && bytes_read == 0)
 	{
 		m_eof = true;
 	}
 
-	return size;
+	return bytes_read;
 }
 
 size_t OsFile::write(const void* data, size_t size)
@@ -108,30 +110,30 @@ size_t OsFile::write(const void* data, size_t size)
 
 void OsFile::seek(size_t position)
 {
-	BOOL seek_result = SetFilePointer(m_file_handle, position, NULL, FILE_BEGIN);
+	DWORD seek_result = SetFilePointer(m_file_handle, position, NULL, FILE_BEGIN);
 
-	CE_ASSERT(seek_result, "Failed to seek");
+	CE_ASSERT(seek_result != INVALID_SET_FILE_POINTER, "Failed to seek");
 }
 
 void OsFile::seek_to_end()
 {
-	BOOL seek_result = SetFilePointer(m_file_handle, 0, NULL, FILE_END);
+	DWORD seek_result = SetFilePointer(m_file_handle, 0, NULL, FILE_END);
 
-	CE_ASSERT(seek_result, "Failed to seek");
+	CE_ASSERT(seek_result != INVALID_SET_FILE_POINTER, "Failed to seek to end");
 }
 
 void OsFile::skip(size_t bytes)
 {
-	BOOL seek_result = SetFilePointer(m_file_handle, bytes, NULL, FILE_CURRENT);
+	DWORD seek_result = SetFilePointer(m_file_handle, bytes, NULL, FILE_CURRENT);
 
-	CE_ASSERT(seek_result, "Failed to seek");
+	CE_ASSERT(seek_result != INVALID_SET_FILE_POINTER, "Failed to skip");
 }
 
 size_t OsFile::position() const
 {
 	DWORD position = SetFilePointer(m_file_handle, 0, NULL, FILE_CURRENT);
 	
-	CE_ASSERT(position, "Failed to seek");
+	CE_ASSERT(position != INVALID_SET_FILE_POINTER, "Failed to get position");
 
 	return position;
 }

+ 1 - 1
src/os/win/WinOS.cpp

@@ -248,7 +248,7 @@ void* open_library(const char* path)
 {
 	HMODULE library = LoadLibrary(path);
 
-	CE_ASSERT(library  != NULL, "Unable to load library '%s' with error: %s\n", path, GetLastError());
+	CE_ASSERT(library  != NULL, "Unable to load library '%s' with error: %d\n", path, GetLastError());
 
 	return library;
 }