@@ -141,7 +141,7 @@ def eye(
141141 # helpers/utils
142142 from uvc import get_time_monotonic
143143 from file_methods import Persistent_Dict
144- from version_utils import VersionFormat
144+ from version_utils import parse_version
145145 from methods import normalize , denormalize , timer
146146 from av_writer import JPEG_Writer , MPEG_Writer , NonMonotonicTimestampError
147147 from ndsi import H264Writer
@@ -236,9 +236,10 @@ def consume_events_and_render_buffer():
236236 glfw .glfwMakeContextCurrent (main_window )
237237 clear_gl_screen ()
238238
239- glViewport (0 , 0 , * g_pool .camera_render_size )
240- for p in g_pool .plugins :
241- p .gl_display ()
239+ if all (c > 0 for c in g_pool .camera_render_size ):
240+ glViewport (0 , 0 , * g_pool .camera_render_size )
241+ for p in g_pool .plugins :
242+ p .gl_display ()
242243
243244 glViewport (0 , 0 , * window_size )
244245 # render graphs
@@ -289,6 +290,11 @@ def on_resize(window, w, h):
289290 nonlocal window_size
290291 nonlocal content_scale
291292
293+ is_minimized = bool (glfw .glfwGetWindowAttrib (window , glfw .GLFW_ICONIFIED ))
294+
295+ if is_minimized :
296+ return
297+
292298 # Always clear buffers on resize to make sure that there are no overlapping
293299 # artifacts from previous frames.
294300 gl_utils .glClear (gl_utils .GL_COLOR_BUFFER_BIT )
@@ -362,7 +368,7 @@ def on_drop(window, count, paths):
362368 session_settings = Persistent_Dict (
363369 os .path .join (g_pool .user_dir , "user_settings_eye{}" .format (eye_id ))
364370 )
365- if VersionFormat (session_settings .get ("version" , "0.0" )) != g_pool .version :
371+ if parse_version (session_settings .get ("version" , "0.0" )) != g_pool .version :
366372 logger .info (
367373 "Session setting are from a different version of this app. I will not use those."
368374 )
@@ -407,8 +413,15 @@ def toggle_general_settings(collapsed):
407413 width , height = session_settings .get ("window_size" , default_window_size )
408414
409415 main_window = glfw .glfwCreateWindow (width , height , title , None , None )
410- window_pos = session_settings .get ("window_position" , window_position_default )
416+
417+ window_position_manager = gl_utils .WindowPositionManager ()
418+ window_pos = window_position_manager .new_window_position (
419+ window = main_window ,
420+ default_position = window_position_default ,
421+ previous_position = session_settings .get ("window_position" , None ),
422+ )
411423 glfw .glfwSetWindowPos (main_window , window_pos [0 ], window_pos [1 ])
424+
412425 glfw .glfwMakeContextCurrent (main_window )
413426 cygl .utils .init ()
414427
@@ -503,6 +516,7 @@ def set_window_size():
503516 toggle_general_settings (True )
504517
505518 g_pool .writer = None
519+ g_pool .rec_path = None
506520
507521 # Register callbacks main_window
508522 glfw .glfwSetFramebufferSizeCallback (main_window , on_resize )
@@ -567,12 +581,12 @@ def window_should_update():
567581 break
568582 elif subject == "recording.started" :
569583 if notification ["record_eye" ] and g_pool .capture .online :
570- record_path = notification ["rec_path" ]
584+ g_pool . rec_path = notification ["rec_path" ]
571585 raw_mode = notification ["compression" ]
572586 start_time_synced = notification ["start_time_synced" ]
573- logger .info ("Will save eye video to: {}" . format ( record_path ) )
587+ logger .info (f "Will save eye video to: { g_pool . rec_path } " )
574588 video_path = os .path .join (
575- record_path , "eye{}.mp4" .format (eye_id )
589+ g_pool . rec_path , "eye{}.mp4" .format (eye_id )
576590 )
577591 if raw_mode and frame and g_pool .capture .jpeg_support :
578592 g_pool .writer = JPEG_Writer (video_path , start_time_synced )
@@ -592,7 +606,13 @@ def window_should_update():
592606 g_pool .writer .release ()
593607 except RuntimeError :
594608 logger .error ("No eye video recorded" )
595- g_pool .writer = None
609+ else :
610+ # TODO: wrap recording logic into plugin
611+ g_pool .capture .intrinsics .save (
612+ g_pool .rec_path , custom_name = f"eye{ eye_id } "
613+ )
614+ finally :
615+ g_pool .writer = None
596616 elif subject .startswith ("meta.should_doc" ):
597617 ipc_socket .notify (
598618 {
0 commit comments