diff --git a/profiler/build/win32/Tracy.vcxproj b/profiler/build/win32/Tracy.vcxproj
index 947890aa..8ab1ddde 100644
--- a/profiler/build/win32/Tracy.vcxproj
+++ b/profiler/build/win32/Tracy.vcxproj
@@ -203,6 +203,7 @@
+
NotSet
NotSet
@@ -326,6 +327,7 @@
+
diff --git a/profiler/build/win32/Tracy.vcxproj.filters b/profiler/build/win32/Tracy.vcxproj.filters
index 06f1982c..12672e3f 100644
--- a/profiler/build/win32/Tracy.vcxproj.filters
+++ b/profiler/build/win32/Tracy.vcxproj.filters
@@ -339,6 +339,9 @@
src
+
+ src
+
@@ -689,6 +692,9 @@
src
+
+ src
+
diff --git a/profiler/src/WindowPosition.cpp b/profiler/src/WindowPosition.cpp
new file mode 100644
index 00000000..f39b6c02
--- /dev/null
+++ b/profiler/src/WindowPosition.cpp
@@ -0,0 +1,48 @@
+#include
+#include
+
+#include "WindowPosition.hpp"
+
+#include "../../server/TracyStorage.hpp"
+
+
+WindowPosition::WindowPosition()
+ : m_fn( tracy::GetSavePath( "window.position" ) )
+{
+ Defaults();
+
+ FILE* f = fopen( m_fn.c_str(), "rb" );
+ if( f )
+ {
+ uint32_t data[5];
+ if( fread( data, 1, sizeof( data ), f ) == sizeof( data ) )
+ {
+ x = data[0];
+ y = data[1];
+ w = data[2];
+ h = data[3];
+ maximize = data[4];
+ }
+ fclose( f );
+
+ if( w <= 0 || h <= 0 ) Defaults();
+ }
+}
+
+WindowPosition::~WindowPosition()
+{
+ FILE* f = fopen( m_fn.c_str(), "wb" );
+ if( !f ) return;
+ uint32_t data[5] = { uint32_t( x ), uint32_t( y ), uint32_t( w ), uint32_t( h ), uint32_t( maximize ) };
+ fwrite( data, 1, sizeof( data ), f );
+ fclose( f );
+}
+
+void WindowPosition::Defaults()
+{
+ x = 200;
+ y = 200;
+ w = 1650;
+ h = 960;
+ maximize = 0;
+}
diff --git a/profiler/src/WindowPosition.hpp b/profiler/src/WindowPosition.hpp
new file mode 100644
index 00000000..b55da283
--- /dev/null
+++ b/profiler/src/WindowPosition.hpp
@@ -0,0 +1,20 @@
+#ifndef __WINDOWPOSITION_HPP__
+#define __WINDOWPOSITION_HPP__
+
+#include
+
+class WindowPosition
+{
+public:
+ WindowPosition();
+ ~WindowPosition();
+
+ int x, y, w, h, maximize;
+
+private:
+ void Defaults();
+
+ std::string m_fn;
+};
+
+#endif
diff --git a/profiler/src/main.cpp b/profiler/src/main.cpp
index f7d374c5..aa33b927 100644
--- a/profiler/src/main.cpp
+++ b/profiler/src/main.cpp
@@ -54,6 +54,8 @@
#include "NativeWindow.hpp"
#include "ResolvService.hpp"
#include "RunQueue.hpp"
+#include "WindowPosition.hpp"
+
static void glfw_error_callback(int error, const char* description)
{
@@ -197,30 +199,7 @@ int main( int argc, char** argv )
}
}
- std::string winPosFile = tracy::GetSavePath( "window.position" );
- int x = 200, y = 200, w = 1650, h = 960, maximize = 0;
- {
- FILE* f = fopen( winPosFile.c_str(), "rb" );
- if( f )
- {
- uint32_t data[5];
- fread( data, 1, sizeof( data ), f );
- fclose( f );
- x = data[0];
- y = data[1];
- w = data[2];
- h = data[3];
- maximize = data[4];
- }
- if( w <= 0 || h <= 0 )
- {
- x = 200;
- y = 200;
- w = 1650;
- h = 960;
- maximize = 0;
- }
- }
+ WindowPosition winPos;
std::string connHistFile = tracy::GetSavePath( "connection.history" );
{
@@ -291,7 +270,7 @@ int main( int argc, char** argv )
#if __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
- GLFWwindow* window = glfwCreateWindow( w, h, title, NULL, NULL);
+ GLFWwindow* window = glfwCreateWindow( winPos.w, winPos.h, title, NULL, NULL);
if( !window ) return 1;
{
@@ -301,9 +280,9 @@ int main( int argc, char** argv )
free( icon.pixels );
}
- glfwSetWindowPos( window, x, y );
+ glfwSetWindowPos( window, winPos.x, winPos.y );
#ifdef GLFW_MAXIMIZED
- if( maximize ) glfwMaximizeWindow( window );
+ if( winPos.maximize ) glfwMaximizeWindow( window );
#endif
s_glfwWindow = window;
glfwMakeContextCurrent(window);
@@ -387,25 +366,16 @@ int main( int argc, char** argv )
if( updateNotesThread.joinable() ) updateNotesThread.join();
view.reset();
- {
- FILE* f = fopen( winPosFile.c_str(), "wb" );
- if( f )
- {
#ifdef GLFW_MAXIMIZED
- uint32_t maximized = glfwGetWindowAttrib( window, GLFW_MAXIMIZED );
- if( maximized ) glfwRestoreWindow( window );
+ uint32_t maximized = glfwGetWindowAttrib( window, GLFW_MAXIMIZED );
+ if( maximized ) glfwRestoreWindow( window );
#else
- uint32_t maximized = 0;
+ uint32_t maximized = 0;
#endif
+ winPos.maximize = maximized;
- glfwGetWindowPos( window, &x, &y );
- glfwGetWindowSize( window, &w, &h );
-
- uint32_t data[5] = { uint32_t( x ), uint32_t( y ), uint32_t( w ), uint32_t( h ), maximized };
- fwrite( data, 1, sizeof( data ), f );
- fclose( f );
- }
- }
+ glfwGetWindowPos( window, &winPos.x, &winPos.y );
+ glfwGetWindowSize( window, &winPos.w, &winPos.h );
// Cleanup
ImGui_ImplOpenGL3_Shutdown();