@@ -141,7 +141,7 @@ def eye(
141
141
# helpers/utils
142
142
from uvc import get_time_monotonic
143
143
from file_methods import Persistent_Dict
144
- from version_utils import VersionFormat
144
+ from version_utils import parse_version
145
145
from methods import normalize , denormalize , timer
146
146
from av_writer import JPEG_Writer , MPEG_Writer , NonMonotonicTimestampError
147
147
from ndsi import H264Writer
@@ -236,9 +236,10 @@ def consume_events_and_render_buffer():
236
236
glfw .glfwMakeContextCurrent (main_window )
237
237
clear_gl_screen ()
238
238
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 ()
242
243
243
244
glViewport (0 , 0 , * window_size )
244
245
# render graphs
@@ -289,6 +290,11 @@ def on_resize(window, w, h):
289
290
nonlocal window_size
290
291
nonlocal content_scale
291
292
293
+ is_minimized = bool (glfw .glfwGetWindowAttrib (window , glfw .GLFW_ICONIFIED ))
294
+
295
+ if is_minimized :
296
+ return
297
+
292
298
# Always clear buffers on resize to make sure that there are no overlapping
293
299
# artifacts from previous frames.
294
300
gl_utils .glClear (gl_utils .GL_COLOR_BUFFER_BIT )
@@ -362,7 +368,7 @@ def on_drop(window, count, paths):
362
368
session_settings = Persistent_Dict (
363
369
os .path .join (g_pool .user_dir , "user_settings_eye{}" .format (eye_id ))
364
370
)
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 :
366
372
logger .info (
367
373
"Session setting are from a different version of this app. I will not use those."
368
374
)
@@ -407,8 +413,15 @@ def toggle_general_settings(collapsed):
407
413
width , height = session_settings .get ("window_size" , default_window_size )
408
414
409
415
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
+ )
411
423
glfw .glfwSetWindowPos (main_window , window_pos [0 ], window_pos [1 ])
424
+
412
425
glfw .glfwMakeContextCurrent (main_window )
413
426
cygl .utils .init ()
414
427
@@ -503,6 +516,7 @@ def set_window_size():
503
516
toggle_general_settings (True )
504
517
505
518
g_pool .writer = None
519
+ g_pool .rec_path = None
506
520
507
521
# Register callbacks main_window
508
522
glfw .glfwSetFramebufferSizeCallback (main_window , on_resize )
@@ -567,12 +581,12 @@ def window_should_update():
567
581
break
568
582
elif subject == "recording.started" :
569
583
if notification ["record_eye" ] and g_pool .capture .online :
570
- record_path = notification ["rec_path" ]
584
+ g_pool . rec_path = notification ["rec_path" ]
571
585
raw_mode = notification ["compression" ]
572
586
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 } " )
574
588
video_path = os .path .join (
575
- record_path , "eye{}.mp4" .format (eye_id )
589
+ g_pool . rec_path , "eye{}.mp4" .format (eye_id )
576
590
)
577
591
if raw_mode and frame and g_pool .capture .jpeg_support :
578
592
g_pool .writer = JPEG_Writer (video_path , start_time_synced )
@@ -592,7 +606,13 @@ def window_should_update():
592
606
g_pool .writer .release ()
593
607
except RuntimeError :
594
608
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
596
616
elif subject .startswith ("meta.should_doc" ):
597
617
ipc_socket .notify (
598
618
{
0 commit comments