mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-10-26 22:06:06 +03:00
feat(app): add windows app
This commit is contained in:
parent
6bebfe5e2f
commit
655d795a9d
7
.github/workflows/pr.yml
vendored
7
.github/workflows/pr.yml
vendored
@ -25,6 +25,13 @@ jobs:
|
|||||||
cc: clang
|
cc: clang
|
||||||
cxx: clang++
|
cxx: clang++
|
||||||
|
|
||||||
|
- name: Windows Latest (MSVC)
|
||||||
|
os: windows-latest
|
||||||
|
build_type: Release
|
||||||
|
test_path: Release/WhoaTest
|
||||||
|
cc: cl
|
||||||
|
cxx: cl
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
|
|||||||
7
.github/workflows/push.yml
vendored
7
.github/workflows/push.yml
vendored
@ -28,6 +28,13 @@ jobs:
|
|||||||
cc: clang
|
cc: clang
|
||||||
cxx: clang++
|
cxx: clang++
|
||||||
|
|
||||||
|
- name: Windows Latest (MSVC)
|
||||||
|
os: windows-latest
|
||||||
|
build_type: Release
|
||||||
|
test_path: Release/WhoaTest
|
||||||
|
cc: cl
|
||||||
|
cxx: cl
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
|
|||||||
@ -26,18 +26,34 @@ set(CMAKE_CXX_STANDARD 11)
|
|||||||
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
|
|
||||||
|
include(lib/system/cmake/system.cmake)
|
||||||
|
|
||||||
# Some templates abuse offsetof
|
# Some templates abuse offsetof
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof")
|
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_MAC)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof")
|
||||||
|
endif()
|
||||||
|
|
||||||
# OS defines
|
# OS defines
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
if(WHOA_SYSTEM_WIN)
|
||||||
|
# Avoid win32 header hell
|
||||||
|
add_compile_definitions(
|
||||||
|
NOMINMAX
|
||||||
|
WIN32_LEAN_AND_MEAN
|
||||||
|
)
|
||||||
|
|
||||||
|
# Lua uses various "unsafe" C functions
|
||||||
|
add_definitions(
|
||||||
|
-D_CRT_SECURE_NO_WARNINGS
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WHOA_SYSTEM_MAC)
|
||||||
|
# Suppress OpenGL deprecation warnings
|
||||||
add_definitions(
|
add_definitions(
|
||||||
-DGL_SILENCE_DEPRECATION
|
-DGL_SILENCE_DEPRECATION
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(lib/system/cmake/system.cmake)
|
|
||||||
|
|
||||||
# Threads
|
# Threads
|
||||||
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_MAC)
|
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_MAC)
|
||||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||||
|
|||||||
@ -1,3 +1,18 @@
|
|||||||
|
if(WHOA_SYSTEM_WIN)
|
||||||
|
file(GLOB PRIVATE_SOURCES "win/*.cpp")
|
||||||
|
|
||||||
|
add_executable(Whoa ${PRIVATE_SOURCES})
|
||||||
|
|
||||||
|
target_link_libraries(Whoa
|
||||||
|
PRIVATE
|
||||||
|
client
|
||||||
|
event
|
||||||
|
gx
|
||||||
|
net
|
||||||
|
util
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WHOA_SYSTEM_MAC)
|
if(WHOA_SYSTEM_MAC)
|
||||||
file(GLOB PRIVATE_SOURCES "mac/*.cpp" "mac/*.mm")
|
file(GLOB PRIVATE_SOURCES "mac/*.cpp" "mac/*.mm")
|
||||||
|
|
||||||
@ -42,7 +57,4 @@ target_include_directories(Whoa
|
|||||||
${CMAKE_SOURCE_DIR}/src
|
${CMAKE_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Windows executables yet to be done
|
install(TARGETS Whoa DESTINATION "bin")
|
||||||
if(WHOA_SYSTEM_MAC OR WHOA_SYSTEM_LINUX)
|
|
||||||
install(TARGETS Whoa DESTINATION "bin")
|
|
||||||
endif()
|
|
||||||
|
|||||||
11
src/app/win/Whoa.cpp
Normal file
11
src/app/win/Whoa.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "client/Client.hpp"
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
CommonMain();
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@ -9,6 +9,10 @@
|
|||||||
#include <tempest/Rect.hpp>
|
#include <tempest/Rect.hpp>
|
||||||
#include <tempest/Vector.hpp>
|
#include <tempest/Vector.hpp>
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
#include "app/mac/MacClient.h"
|
#include "app/mac/MacClient.h"
|
||||||
#endif
|
#endif
|
||||||
@ -327,7 +331,7 @@ void ConvertPosition(int32_t clientx, int32_t clienty, float* x, float* y) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tagRECT windowDim;
|
RECT windowDim;
|
||||||
OsGetDefaultWindowRect(&windowDim);
|
OsGetDefaultWindowRect(&windowDim);
|
||||||
|
|
||||||
*x = static_cast<float>(clientx) / static_cast<float>(windowDim.right - windowDim.left);
|
*x = static_cast<float>(clientx) / static_cast<float>(windowDim.right - windowDim.left);
|
||||||
@ -565,6 +569,7 @@ const char* KeyCodeToString(KEY key) {
|
|||||||
int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) {
|
int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) {
|
||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
@ -592,9 +597,9 @@ int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param
|
|||||||
void OsInputInitialize() {
|
void OsInputInitialize() {
|
||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
Input::s_numlockState = GetAsyncKeyState(144);
|
Input::s_numlockState = GetAsyncKeyState(144);
|
||||||
PVOID pvParam = 10;
|
int32_t mouseSpeed = 10;
|
||||||
SystemParametersInfoA(SPI_GETMOUSESPEED, 0, &pvParam, 0);
|
SystemParametersInfoA(SPI_GETMOUSESPEED, 0, &mouseSpeed, 0);
|
||||||
Input::s_savedMouseSpeed = pvParam;
|
Input::s_savedMouseSpeed = mouseSpeed;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
|
|||||||
@ -134,7 +134,7 @@ void IEvtSchedulerProcess() {
|
|||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
Event::s_startEvent.Set();
|
Event::s_startEvent.Set();
|
||||||
|
|
||||||
SchedulerThreadProc(1);
|
SchedulerThreadProc(reinterpret_cast<void*>(1));
|
||||||
|
|
||||||
Event::s_mainThread = 0;
|
Event::s_mainThread = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -70,18 +70,28 @@ uint32_t CGxDevice::s_texFormatBytesPerBlock[] = {
|
|||||||
4 // GxTex_D24X8
|
4 // GxTex_D24X8
|
||||||
};
|
};
|
||||||
|
|
||||||
CGxDevice* CGxDevice::NewGLL() {
|
CGxDevice* CGxDevice::NewD3d() {
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
// TODO
|
||||||
void* m = SMemAlloc(sizeof(CGxDeviceGLL), __FILE__, __LINE__, 0);
|
return nullptr;
|
||||||
|
|
||||||
if (m) {
|
|
||||||
return new (m) CGxDeviceGLL();
|
|
||||||
} else {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGxDevice* CGxDevice::NewD3d9Ex() {
|
||||||
|
// TODO
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
|
CGxDevice* CGxDevice::NewGLL() {
|
||||||
|
void* m = SMemAlloc(sizeof(CGxDeviceGLL), __FILE__, __LINE__, 0);
|
||||||
|
|
||||||
|
if (m) {
|
||||||
|
return new (m) CGxDeviceGLL();
|
||||||
|
} else {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
CGxDevice* CGxDevice::NewOpenGl() {
|
CGxDevice* CGxDevice::NewOpenGl() {
|
||||||
// TODO
|
// TODO
|
||||||
// void* m = SMemAlloc(sizeof(CGxDeviceOpenGl), __FILE__, __LINE__, 0);
|
// void* m = SMemAlloc(sizeof(CGxDeviceOpenGl), __FILE__, __LINE__, 0);
|
||||||
|
|||||||
@ -46,8 +46,12 @@ class CGxDevice {
|
|||||||
static uint32_t s_texFormatBytesPerBlock[];
|
static uint32_t s_texFormatBytesPerBlock[];
|
||||||
|
|
||||||
// Static functions
|
// Static functions
|
||||||
static CGxDevice* NewGLL(void);
|
static CGxDevice* NewD3d();
|
||||||
static CGxDevice* NewOpenGl(void);
|
static CGxDevice* NewD3d9Ex();
|
||||||
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
|
static CGxDevice* NewGLL();
|
||||||
|
#endif
|
||||||
|
static CGxDevice* NewOpenGl();
|
||||||
|
|
||||||
// Member variables
|
// Member variables
|
||||||
TSGrowableArray<CGxPushedRenderState> m_pushedStates;
|
TSGrowableArray<CGxPushedRenderState> m_pushedStates;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ bool s_forceOnscreen;
|
|||||||
Rect s_savedWindowRect;
|
Rect s_savedWindowRect;
|
||||||
Rect s_savedWindowZoomedRect;
|
Rect s_savedWindowZoomedRect;
|
||||||
|
|
||||||
int32_t OsGetDefaultWindowRect(tagRECT* rect) {
|
int32_t OsGetDefaultWindowRect(RECT* rect) {
|
||||||
auto window = g_theGxDevicePtr->DeviceDefWindow();
|
auto window = g_theGxDevicePtr->DeviceDefWindow();
|
||||||
|
|
||||||
rect->left = window.minX;
|
rect->left = window.minX;
|
||||||
|
|||||||
@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
#include <ApplicationServices/ApplicationServices.h>
|
#include <ApplicationServices/ApplicationServices.h>
|
||||||
#endif
|
#endif
|
||||||
@ -16,14 +20,16 @@ struct Rect {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct tagRECT {
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
|
typedef struct tagRECT {
|
||||||
int32_t left;
|
int32_t left;
|
||||||
int32_t top;
|
int32_t top;
|
||||||
int32_t right;
|
int32_t right;
|
||||||
int32_t bottom;
|
int32_t bottom;
|
||||||
};
|
} RECT;
|
||||||
|
#endif
|
||||||
|
|
||||||
int32_t OsGetDefaultWindowRect(tagRECT* rect);
|
int32_t OsGetDefaultWindowRect(RECT* rect);
|
||||||
|
|
||||||
Rect* GetSavedWindowBounds();
|
Rect* GetSavedWindowBounds();
|
||||||
|
|
||||||
|
|||||||
@ -602,6 +602,7 @@ void CGxString::SetColor(const CImVector& color) {
|
|||||||
|
|
||||||
int32_t CGxString::SetGradient(int32_t startCharacter, int32_t length) {
|
int32_t CGxString::SetGradient(int32_t startCharacter, int32_t length) {
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGxString::SetStringPosition(const C3Vector& position) {
|
void CGxString::SetStringPosition(const C3Vector& position) {
|
||||||
|
|||||||
@ -17,3 +17,11 @@ target_link_libraries(net
|
|||||||
common
|
common
|
||||||
storm
|
storm
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(WHOA_SYSTEM_WIN)
|
||||||
|
target_link_libraries(net
|
||||||
|
PUBLIC
|
||||||
|
ws2_32
|
||||||
|
wsock32
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
|
#include <ws2tcpip.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint64_t WowConnection::s_countTotalBytes;
|
uint64_t WowConnection::s_countTotalBytes;
|
||||||
@ -108,7 +109,11 @@ void WowConnection::CheckAccept() {
|
|||||||
|
|
||||||
getpeername(sock, reinterpret_cast<sockaddr*>(&verifyAddr), &verifyAddrLen);
|
getpeername(sock, reinterpret_cast<sockaddr*>(&verifyAddr), &verifyAddrLen);
|
||||||
if (!WowConnection::s_verifyAddr(&verifyAddr)) {
|
if (!WowConnection::s_verifyAddr(&verifyAddr)) {
|
||||||
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
|
closesocket(sock);
|
||||||
|
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
close(sock);
|
close(sock);
|
||||||
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +121,12 @@ void WowConnection::CheckAccept() {
|
|||||||
// TODO
|
// TODO
|
||||||
// RegisterSocket(sock);
|
// RegisterSocket(sock);
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
|
u_long mode = 1;
|
||||||
|
ioctlsocket(sock, FIONBIO, &mode);
|
||||||
|
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
fcntl(sock, F_SETFL, O_NONBLOCK);
|
fcntl(sock, F_SETFL, O_NONBLOCK);
|
||||||
|
#endif
|
||||||
|
|
||||||
auto connMem = SMemAlloc(sizeof(WowConnection), __FILE__, __LINE__, 0x0);
|
auto connMem = SMemAlloc(sizeof(WowConnection), __FILE__, __LINE__, 0x0);
|
||||||
auto conn = new (connMem) WowConnection(sock, reinterpret_cast<sockaddr_in*>(&addr), this->m_response);
|
auto conn = new (connMem) WowConnection(sock, reinterpret_cast<sockaddr_in*>(&addr), this->m_response);
|
||||||
@ -147,7 +157,7 @@ void WowConnection::CheckAccept() {
|
|||||||
void WowConnection::CheckConnect() {
|
void WowConnection::CheckConnect() {
|
||||||
int32_t err;
|
int32_t err;
|
||||||
socklen_t errLen = sizeof(err);
|
socklen_t errLen = sizeof(err);
|
||||||
if (getsockopt(this->m_sock, SOL_SOCKET, SO_ERROR, &err, &errLen)) {
|
if (getsockopt(this->m_sock, SOL_SOCKET, SO_ERROR, reinterpret_cast<char*>(&err), &errLen)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,9 +203,7 @@ void WowConnection::CheckConnect() {
|
|||||||
void WowConnection::CloseSocket(int32_t sock) {
|
void WowConnection::CloseSocket(int32_t sock) {
|
||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
closesocket(sock);
|
closesocket(sock);
|
||||||
#endif
|
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
|
||||||
close(sock);
|
close(sock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -334,11 +342,15 @@ void WowConnection::DoReads() {
|
|||||||
void WowConnection::DoStreamReads() {
|
void WowConnection::DoStreamReads() {
|
||||||
uint32_t startTime = OsGetAsyncTimeMsPrecise();
|
uint32_t startTime = OsGetAsyncTimeMsPrecise();
|
||||||
uint8_t buf[4096];
|
uint8_t buf[4096];
|
||||||
uint32_t bytesRead;
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
|
int32_t bytesRead;
|
||||||
|
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
|
ssize_t bytesRead;
|
||||||
|
#endif
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
while (1) {
|
while (1) {
|
||||||
bytesRead = recv(this->m_sock, buf, sizeof(buf), 0);
|
bytesRead = recv(this->m_sock, reinterpret_cast<char*>(buf), sizeof(buf), 0);
|
||||||
|
|
||||||
if (bytesRead >= 0) {
|
if (bytesRead >= 0) {
|
||||||
break;
|
break;
|
||||||
@ -376,7 +388,7 @@ void WowConnection::DoStreamReads() {
|
|||||||
|
|
||||||
bool shouldDisconnect = false;
|
bool shouldDisconnect = false;
|
||||||
#if defined(WHOA_SYSTEM_WIN)
|
#if defined(WHOA_SYSTEM_WIN)
|
||||||
shouldDisconnect = bytesRead >= 0 || WSAGetLastError() != WSAEAGAIN;
|
shouldDisconnect = bytesRead >= 0 || WSAGetLastError() != WSAEWOULDBLOCK;
|
||||||
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
#elif defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
shouldDisconnect = bytesRead >= 0 || errno != EAGAIN;
|
shouldDisconnect = bytesRead >= 0 || errno != EAGAIN;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -10,8 +10,10 @@
|
|||||||
#include <atomic>
|
#include <atomic>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool Blizzard::System_Thread::s_initialized;
|
|
||||||
Blizzard::System_Debug::AssertCallback Blizzard::System_Debug::s_assertCallback = nullptr;
|
Blizzard::System_Debug::AssertCallback Blizzard::System_Debug::s_assertCallback = nullptr;
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
|
bool Blizzard::System_Thread::s_initialized;
|
||||||
Blizzard::Lock::DoOnceData Blizzard::System_Lock::s_initMutexAttrOnce;
|
Blizzard::Lock::DoOnceData Blizzard::System_Lock::s_initMutexAttrOnce;
|
||||||
Blizzard::System_Lock::MutexAttr Blizzard::System_Lock::s_mutexattr;
|
Blizzard::System_Lock::MutexAttr Blizzard::System_Lock::s_mutexattr;
|
||||||
Blizzard::Thread::ThreadRecord* Blizzard::System_Thread::s_mainThread;
|
Blizzard::Thread::ThreadRecord* Blizzard::System_Thread::s_mainThread;
|
||||||
@ -22,6 +24,7 @@ Blizzard::Thread::TLSSlot Blizzard::System_Thread::s_threadRecordTLS;
|
|||||||
std::map<Blizzard::Thread::ThreadRecord*, Blizzard::Thread::ThreadRecord*>* Blizzard::System_Thread::s_threadRegistry;
|
std::map<Blizzard::Thread::ThreadRecord*, Blizzard::Thread::ThreadRecord*>* Blizzard::System_Thread::s_threadRegistry;
|
||||||
Blizzard::Thread::TLSSlot* Blizzard::System_Thread::s_slotList[128];
|
Blizzard::Thread::TLSSlot* Blizzard::System_Thread::s_slotList[128];
|
||||||
int32_t Blizzard::System_Thread::s_slotListUsed;
|
int32_t Blizzard::System_Thread::s_slotListUsed;
|
||||||
|
#endif
|
||||||
|
|
||||||
void Blizzard::Debug::Assert(const char* a1, const char* a2, uint32_t a3) {
|
void Blizzard::Debug::Assert(const char* a1, const char* a2, uint32_t a3) {
|
||||||
if (System_Debug::s_assertCallback) {
|
if (System_Debug::s_assertCallback) {
|
||||||
@ -103,14 +106,17 @@ void Blizzard::String::MemFill(void* a1, uint32_t a2, unsigned char a3) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Blizzard::Process::Sleep(uint32_t duration) {
|
void Blizzard::Process::Sleep(uint32_t duration) {
|
||||||
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
struct timespec request;
|
struct timespec request;
|
||||||
|
|
||||||
request.tv_sec = 0;
|
request.tv_sec = 0;
|
||||||
request.tv_nsec = duration * 1000000;
|
request.tv_nsec = duration * 1000000;
|
||||||
|
|
||||||
nanosleep(&request, nullptr);
|
nanosleep(&request, nullptr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
void Blizzard::Lock::DoOnce(DoOnceData& a1, void (*a2)(void*), void* a3) {
|
void Blizzard::Lock::DoOnce(DoOnceData& a1, void (*a2)(void*), void* a3) {
|
||||||
if (!a1.done) {
|
if (!a1.done) {
|
||||||
if (Blizzard::Lock::Atomic::Increment(&a1.atomic) == 1) {
|
if (Blizzard::Lock::Atomic::Increment(&a1.atomic) == 1) {
|
||||||
@ -325,3 +331,4 @@ Blizzard::Thread::ThreadRecord* Blizzard::System_Thread::NewThread(uint32_t (*a1
|
|||||||
bool Blizzard::System_Thread::TLSSlotIsAllocated(const Thread::TLSSlot* slot) {
|
bool Blizzard::System_Thread::TLSSlotIsAllocated(const Thread::TLSSlot* slot) {
|
||||||
return slot->allocated;
|
return slot->allocated;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@ -34,6 +34,21 @@ namespace Blizzard {
|
|||||||
void Sleep(uint32_t);
|
void Sleep(uint32_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace System_Debug {
|
||||||
|
// Types
|
||||||
|
typedef void (*AssertCallback)(const char*, const char*, const char*, uint32_t);
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
extern AssertCallback s_assertCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Debug {
|
||||||
|
// Functions
|
||||||
|
void Assert(const char*, const char*, uint32_t);
|
||||||
|
void SetAssertHandler(Blizzard::System_Debug::AssertCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
||||||
namespace Lock {
|
namespace Lock {
|
||||||
// Types
|
// Types
|
||||||
typedef pthread_mutex_t Mutex;
|
typedef pthread_mutex_t Mutex;
|
||||||
@ -54,20 +69,6 @@ namespace Blizzard {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace System_Debug {
|
|
||||||
// Types
|
|
||||||
typedef void (*AssertCallback)(const char*, const char*, const char*, uint32_t);
|
|
||||||
|
|
||||||
// Variables
|
|
||||||
extern AssertCallback s_assertCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Debug {
|
|
||||||
// Functions
|
|
||||||
void Assert(const char*, const char*, uint32_t);
|
|
||||||
void SetAssertHandler(Blizzard::System_Debug::AssertCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace System_Lock {
|
namespace System_Lock {
|
||||||
// Types
|
// Types
|
||||||
typedef pthread_mutexattr_t MutexAttr;
|
typedef pthread_mutexattr_t MutexAttr;
|
||||||
@ -127,6 +128,7 @@ namespace Blizzard {
|
|||||||
Thread::ThreadRecord* NewThread(uint32_t (*)(void*), void*, const char*);
|
Thread::ThreadRecord* NewThread(uint32_t (*)(void*), void*, const char*);
|
||||||
bool TLSSlotIsAllocated(const Thread::TLSSlot*);
|
bool TLSSlotIsAllocated(const Thread::TLSSlot*);
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <storm/Memory.hpp>
|
#include <storm/Memory.hpp>
|
||||||
|
#include <storm/String.hpp>
|
||||||
|
|
||||||
// TODO Proper implementation
|
// TODO Proper implementation
|
||||||
int32_t SFile::Close(SFile* file) {
|
int32_t SFile::Close(SFile* file) {
|
||||||
@ -27,11 +28,11 @@ int32_t SFile::IsStreamingMode() {
|
|||||||
|
|
||||||
// TODO Proper implementation
|
// TODO Proper implementation
|
||||||
int32_t SFile::Load(SArchive* archive, const char* filename, void** buffer, size_t* bytes, size_t extraBytes, uint32_t flags, SOVERLAPPED* overlapped) {
|
int32_t SFile::Load(SArchive* archive, const char* filename, void** buffer, size_t* bytes, size_t extraBytes, uint32_t flags, SOVERLAPPED* overlapped) {
|
||||||
size_t pathlen = strlen(filename);
|
auto pathLen = SStrLen(filename);
|
||||||
char path[pathlen];
|
char path[STORM_MAX_PATH];
|
||||||
strcpy(path, filename);
|
SStrCopy(path, filename, sizeof(path));
|
||||||
|
|
||||||
for (int32_t i = 0; i < pathlen; ++i) {
|
for (int32_t i = 0; i < pathLen; ++i) {
|
||||||
if (path[i] == '\\') {
|
if (path[i] == '\\') {
|
||||||
path[i] = '/';
|
path[i] = '/';
|
||||||
}
|
}
|
||||||
@ -72,11 +73,11 @@ int32_t SFile::Open(const char* filename, SFile** file) {
|
|||||||
|
|
||||||
// TODO Proper implementation
|
// TODO Proper implementation
|
||||||
int32_t SFile::OpenEx(SArchive* archive, const char* filename, uint32_t flags, SFile** file) {
|
int32_t SFile::OpenEx(SArchive* archive, const char* filename, uint32_t flags, SFile** file) {
|
||||||
size_t pathlen = strlen(filename);
|
auto pathLen = SStrLen(filename);
|
||||||
char path[pathlen];
|
char path[STORM_MAX_PATH];
|
||||||
strcpy(path, filename);
|
SStrCopy(path, filename, sizeof(path));
|
||||||
|
|
||||||
for (int32_t i = 0; i < pathlen; ++i) {
|
for (int32_t i = 0; i < pathLen; ++i) {
|
||||||
if (path[i] == '\\') {
|
if (path[i] == '\\') {
|
||||||
path[i] = '/';
|
path[i] = '/';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ if(WHOA_SYSTEM_MAC)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WHOA_SYSTEM_LINUX)
|
if(WHOA_SYSTEM_WIN OR WHOA_SYSTEM_LINUX)
|
||||||
file(GLOB PRIVATE_SOURCES "Test.cpp" "gx/*.cpp" "util/*.cpp")
|
file(GLOB PRIVATE_SOURCES "Test.cpp" "gx/*.cpp" "util/*.cpp")
|
||||||
|
|
||||||
add_executable(WhoaTest ${PRIVATE_SOURCES})
|
add_executable(WhoaTest ${PRIVATE_SOURCES})
|
||||||
@ -39,7 +39,4 @@ target_include_directories(WhoaTest
|
|||||||
${CMAKE_SOURCE_DIR}/vendor/catch2-2.13.10
|
${CMAKE_SOURCE_DIR}/vendor/catch2-2.13.10
|
||||||
)
|
)
|
||||||
|
|
||||||
# Windows executables yet to be done
|
install(TARGETS WhoaTest DESTINATION "bin")
|
||||||
if(WHOA_SYSTEM_MAC OR WHOA_SYSTEM_LINUX)
|
|
||||||
install(TARGETS WhoaTest DESTINATION "bin")
|
|
||||||
endif()
|
|
||||||
|
|||||||
4
vendor/freetype-2.0.9/CMakeLists.txt
vendored
4
vendor/freetype-2.0.9/CMakeLists.txt
vendored
@ -1,4 +1,6 @@
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations -Wno-empty-body")
|
if(WHOA_SYSTEM_MAC OR WHOA_SYSTEM_LINUX)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations -Wno-empty-body")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(FREETYPE_SRC_DIR "./src")
|
set(FREETYPE_SRC_DIR "./src")
|
||||||
set(FREETYPE_INCLUDE_DIR "./include")
|
set(FREETYPE_INCLUDE_DIR "./include")
|
||||||
|
|||||||
4
vendor/lua-5.1.3/CMakeLists.txt
vendored
4
vendor/lua-5.1.3/CMakeLists.txt
vendored
@ -1,4 +1,6 @@
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations -Wno-empty-body")
|
if(WHOA_SYSTEM_MAC OR WHOA_SYSTEM_LINUX)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations -Wno-empty-body")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(LUA_SRC_DIR "./src")
|
set(LUA_SRC_DIR "./src")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user