mirror of
https://github.com/simtactics/niotso.git
synced 2025-07-04 21:50:37 -04:00
Split off the Windows message handler into a separate thread.
This commit is contained in:
parent
d9afae7022
commit
4294cb41f7
11 changed files with 547 additions and 217 deletions
|
@ -18,48 +18,51 @@
|
|||
#include "../EngineInterface.hpp"
|
||||
|
||||
namespace System {
|
||||
HINSTANCE hInst = NULL;
|
||||
HANDLE Process;
|
||||
HANDLE ProcessHeap;
|
||||
LARGE_INTEGER ClockFreq;
|
||||
float FramePeriod;
|
||||
UserInput_t UserInput;
|
||||
bool SceneFailed = false;
|
||||
|
||||
int Initialize(){
|
||||
memset(&UserInput, 0, sizeof(UserInput));
|
||||
|
||||
QueryPerformanceFrequency(&ClockFreq);
|
||||
|
||||
DEVMODE dm;
|
||||
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
|
||||
System::FramePeriod = 1.0f/dm.dmDisplayFrequency;
|
||||
|
||||
if(FT_Init_FreeType(&Graphics::FreeTypeLibrary)){
|
||||
MessageBox(Window::hWnd, "Failed to initialize FreeType.", NULL, MB_OK | MB_ICONERROR);
|
||||
Graphics::FreeTypeLibrary = NULL;
|
||||
Shutdown();
|
||||
return ERROR_SYSTEM_INIT_FREETYPE;
|
||||
};
|
||||
if(FT_New_Face(Graphics::FreeTypeLibrary, "simdialogue-uni-game.ttf", 0, &Graphics::FontFace)){
|
||||
MessageBox(Window::hWnd, "simdialogue-uni-game.ttf does not exist or is corrupt or invalid.",
|
||||
NULL, MB_OK | MB_ICONERROR);
|
||||
Graphics::FontFace = NULL;
|
||||
Shutdown();
|
||||
return ERROR_SYSTEM_MISSING_FONT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
HINSTANCE hInst = NULL;
|
||||
HANDLE Process;
|
||||
HANDLE ProcessHeap;
|
||||
LARGE_INTEGER ClockFreq;
|
||||
volatile float FramePeriod;
|
||||
UserInput_t UserInput;
|
||||
volatile UserInput_t UserInput_v;
|
||||
bool SceneFailed = false;
|
||||
|
||||
int Initialize(){
|
||||
memset(&UserInput, 0, sizeof(UserInput));
|
||||
|
||||
void Shutdown(){
|
||||
if(Graphics::FontFace){
|
||||
FT_Done_Face(Graphics::FontFace);
|
||||
Graphics::FontFace = NULL;
|
||||
}
|
||||
if(Graphics::FreeTypeLibrary){
|
||||
FT_Done_FreeType(Graphics::FreeTypeLibrary);
|
||||
Graphics::FreeTypeLibrary = NULL;
|
||||
}
|
||||
QueryPerformanceFrequency(&ClockFreq);
|
||||
|
||||
DEVMODE dm;
|
||||
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
|
||||
System::FramePeriod = 1.0f/dm.dmDisplayFrequency;
|
||||
|
||||
if(FT_Init_FreeType(&Graphics::FreeTypeLibrary)){
|
||||
MessageBox(Window::hWnd, "Failed to initialize FreeType.", NULL, MB_OK | MB_ICONERROR);
|
||||
Graphics::FreeTypeLibrary = NULL;
|
||||
Shutdown();
|
||||
return ERROR_SYSTEM_INIT_FREETYPE;
|
||||
};
|
||||
if(FT_New_Face(Graphics::FreeTypeLibrary, "simdialogue-uni-game.ttf", 0, &Graphics::FontFace)){
|
||||
MessageBox(Window::hWnd, "simdialogue-uni-game.ttf does not exist or is corrupt or invalid.",
|
||||
NULL, MB_OK | MB_ICONERROR);
|
||||
Graphics::FontFace = NULL;
|
||||
Shutdown();
|
||||
return ERROR_SYSTEM_MISSING_FONT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Shutdown(){
|
||||
if(Graphics::FontFace){
|
||||
FT_Done_Face(Graphics::FontFace);
|
||||
Graphics::FontFace = NULL;
|
||||
}
|
||||
if(Graphics::FreeTypeLibrary){
|
||||
FT_Done_FreeType(Graphics::FreeTypeLibrary);
|
||||
Graphics::FreeTypeLibrary = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -15,15 +15,15 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//System/System.cpp
|
||||
namespace System {
|
||||
int Initialize();
|
||||
void Shutdown();
|
||||
|
||||
extern HINSTANCE hInst;
|
||||
extern HANDLE Process;
|
||||
extern HANDLE ProcessHeap;
|
||||
extern LARGE_INTEGER ClockFreq;
|
||||
extern float FramePeriod;
|
||||
extern volatile float FramePeriod;
|
||||
|
||||
struct UserInput_t {
|
||||
bool Keys[256];
|
||||
|
@ -31,7 +31,8 @@ namespace System {
|
|||
bool CloseWindow;
|
||||
};
|
||||
extern UserInput_t UserInput;
|
||||
|
||||
extern volatile UserInput_t UserInput_v;
|
||||
|
||||
extern bool SceneFailed;
|
||||
|
||||
//Constants
|
||||
|
@ -52,8 +53,12 @@ namespace System {
|
|||
//Use: return ERROR_INIT | result;
|
||||
#define ERROR_INIT_WINDOW 0x0100
|
||||
enum {
|
||||
ERROR_REGISTER_CLASS = 1,
|
||||
ERROR_CREATE_WINDOW
|
||||
ERROR_WINDOW_SYNCOBJECT = 1,
|
||||
ERROR_WINDOW_CREATE_THREAD,
|
||||
ERROR_WINDOW_SYNCHRONIZE,
|
||||
ERROR_WINDOW_REGISTER_CLASS,
|
||||
ERROR_WINDOW_CREATE,
|
||||
ERROR_WINDOW_HANDLE
|
||||
};
|
||||
#define ERROR_INIT_SYSTEM 0x0200
|
||||
enum {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue