diff --git a/src/framework/platform.h b/src/framework/platform.h index 33c17b77..127c2918 100644 --- a/src/framework/platform.h +++ b/src/framework/platform.h @@ -52,6 +52,9 @@ namespace Platform int getWindowHeight(); bool isWindowMaximized(); + int getDisplayHeight(); + int getDisplayWidth(); + /// Get GL extension function address void *getExtensionProcAddress(const char *ext); /// Check if GL extension is supported diff --git a/src/framework/win32platform.cpp b/src/framework/win32platform.cpp index 5509db59..ec74ee05 100644 --- a/src/framework/win32platform.cpp +++ b/src/framework/win32platform.cpp @@ -350,8 +350,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) RECT *rect = (RECT*)lParam; win32.x = rect->left; win32.y = rect->top; - win32.width = rect->right - rect->left; - win32.height = rect->bottom - rect->top; break; } case WM_SIZE: @@ -366,6 +364,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) break; } + win32.width = LOWORD(lParam); + win32.height = HIWORD(lParam); g_engine.onResize(LOWORD(lParam), HIWORD(lParam)); break; } diff --git a/src/framework/x11platform.cpp b/src/framework/x11platform.cpp index 8dc54c4a..18e8f20f 100644 --- a/src/framework/x11platform.cpp +++ b/src/framework/x11platform.cpp @@ -772,6 +772,16 @@ int Platform::getWindowHeight() return x11.height; } +int Platform::getDisplayWidth() +{ + return XDisplayWidth(x11.display, DefaultScreen(x11.display)); +} + +int Platform::getDisplayHeight() +{ + return XDisplayHeight(x11.display, DefaultScreen(x11.display)); +} + bool Platform::isWindowMaximized() { bool ret = false; diff --git a/src/main.cpp b/src/main.cpp index 74bc0f86..5ab26e80 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -48,10 +48,16 @@ void signal_handler(int sig) /// Default configurations void setDefaultConfigs() { - g_config.setValue("window x", 0); - g_config.setValue("window y", 0); - g_config.setValue("window width", 640); - g_config.setValue("window height", 480); + // default size + int defWidth = 640; + int defHeight = 480; + + // init on screen center + g_config.setValue("window x", (Platform::getDisplayWidth() - defWidth)/2); + g_config.setValue("window y", (Platform::getDisplayHeight() - defHeight)/2); + + g_config.setValue("window width", defWidth); + g_config.setValue("window height", defHeight); g_config.setValue("window maximized", false); }