Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf@nereid.pl>2022-07-25 22:48:06 +0300
committerBartosz Taudul <wolf@nereid.pl>2022-07-28 01:24:45 +0300
commit31b6a88923dca058ef976cba4c0881c4e43710c6 (patch)
treed9e0f763296f7339adc431ad440956587ddcf3ed /profiler
parent208755ad532c3bb812dda38973b8fd6ab185689c (diff)
Extract window position save/load functionality.
Diffstat (limited to 'profiler')
-rw-r--r--profiler/build/win32/Tracy.vcxproj2
-rw-r--r--profiler/build/win32/Tracy.vcxproj.filters6
-rw-r--r--profiler/src/WindowPosition.cpp48
-rw-r--r--profiler/src/WindowPosition.hpp20
-rw-r--r--profiler/src/main.cpp54
5 files changed, 88 insertions, 42 deletions
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 @@
<ClCompile Include="..\..\src\NativeWindow.cpp" />
<ClCompile Include="..\..\src\ResolvService.cpp" />
<ClCompile Include="..\..\src\RunQueue.cpp" />
+ <ClCompile Include="..\..\src\WindowPosition.cpp" />
<ClCompile Include="..\..\src\winmain.cpp">
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotSet</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotSet</EnableEnhancedInstructionSet>
@@ -326,6 +327,7 @@
<ClInclude Include="..\..\src\ResolvService.hpp" />
<ClInclude Include="..\..\src\RunQueue.hpp" />
<ClInclude Include="..\..\src\stb_image.h" />
+ <ClInclude Include="..\..\src\WindowPosition.hpp" />
</ItemGroup>
<ItemGroup>
<Natvis Include="DebugVis.natvis" />
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 @@
<ClCompile Include="..\..\src\RunQueue.cpp">
<Filter>src</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\WindowPosition.cpp">
+ <Filter>src</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\server\TracyEvent.hpp">
@@ -689,6 +692,9 @@
<ClInclude Include="..\..\src\RunQueue.hpp">
<Filter>src</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\WindowPosition.hpp">
+ <Filter>src</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<Natvis Include="DebugVis.natvis" />
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 <stdint.h>
+#include <stdio.h>
+
+#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 <string>
+
+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();