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();