Deffered texture upding in viewer widget

This commit is contained in:
2025-08-01 14:17:36 +02:00
parent 9306f2d6ea
commit 679b47262a
2 changed files with 28 additions and 54 deletions

View File

@ -19,6 +19,7 @@ class StageViewerWidget(BaseWidget):
self.current = None self.current = None
self.texture_tag = dpg.generate_uuid() self.texture_tag = dpg.generate_uuid()
self.img = None self.img = None
self.needs_update = False
# Subscribe only to stage list updates # Subscribe only to stage list updates
self.manager.bus.subscribe( self.manager.bus.subscribe(
@ -44,7 +45,8 @@ class StageViewerWidget(BaseWidget):
def on_resize(self, app_data): def on_resize(self, app_data):
if self.img is not None: if self.img is not None:
self.update_texture(self.img) self.needs_update = True
# self.update_texture(self.img)
def on_stage_list(self, stages): def on_stage_list(self, stages):
# Update dropdown items # Update dropdown items
@ -56,7 +58,8 @@ class StageViewerWidget(BaseWidget):
if name == self.current: if name == self.current:
if img is not None: if img is not None:
self.img = img self.img = img
self.update_texture(img) self.needs_update = True
# self.update_texture(img)
def on_select(self, sender, selected_stage): def on_select(self, sender, selected_stage):
# User-picked stage: fetch and render # User-picked stage: fetch and render
@ -64,7 +67,8 @@ class StageViewerWidget(BaseWidget):
img = self.manager.pipeline.get_stage(selected_stage) img = self.manager.pipeline.get_stage(selected_stage)
if img is not None: if img is not None:
self.img = img self.img = img
self.update_texture(img) self.needs_update = True
# self.update_texture(img)
def update_texture(self, img: np.ndarray): def update_texture(self, img: np.ndarray):
# img is a NumPy array with shape (h, w, 4) # img is a NumPy array with shape (h, w, 4)
@ -105,3 +109,8 @@ class StageViewerWidget(BaseWidget):
width=disp_w, width=disp_w,
height=disp_h height=disp_h
) )
def update(self):
if self.needs_update:
self.needs_update = False
self.update_texture(self.img)

View File

@ -1,62 +1,27 @@
[Window][WindowOverViewport_11111111] [Window][WindowOverViewport_11111111]
Pos=0,19 Pos=0,19
Size=810,581 Size=800,581
Collapsed=0 Collapsed=0
[Window][###22]
Pos=0,19
Size=299,581
Collapsed=0
DockId=0x00000001,0
[Window][###27]
Pos=301,19
Size=499,581
Collapsed=0
DockId=0x00000002,0
[Window][Debug##Default] [Window][Debug##Default]
Pos=60,60 Pos=60,60
Size=400,400 Size=400,400
Collapsed=0 Collapsed=0
[Window][###28]
Pos=143,94
Size=400,400
Collapsed=0
[Window][###33]
Pos=-2,48
Size=300,150
Collapsed=0
[Window][###37]
Pos=580,56
Size=400,400
Collapsed=0
[Window][###22]
Pos=0,19
Size=278,581
Collapsed=0
DockId=0x00000005,0
[Window][###27]
Pos=280,19
Size=530,581
Collapsed=0
DockId=0x00000001,0
[Window][###31]
Pos=516,19
Size=444,381
Collapsed=0
DockId=0x00000002,0
[Window][###41]
Pos=185,19
Size=821,577
Collapsed=0
DockId=0x00000001,0
[Window][###38]
Pos=209,19
Size=751,574
Collapsed=0
DockId=0x00000001,0
[Docking][Data] [Docking][Data]
DockSpace ID=0x7C6B3D9B Window=0xA87D555D Pos=0,19 Size=810,581 Split=X DockSpace ID=0x7C6B3D9B Window=0xA87D555D Pos=0,19 Size=800,581 Split=X Selected=0x26E8F608
DockNode ID=0x00000005 Parent=0x7C6B3D9B SizeRef=278,381 Selected=0xEE087978 DockNode ID=0x00000001 Parent=0x7C6B3D9B SizeRef=299,581 Selected=0xEE087978
DockNode ID=0x00000006 Parent=0x7C6B3D9B SizeRef=680,381 Split=X DockNode ID=0x00000002 Parent=0x7C6B3D9B SizeRef=499,581 CentralNode=1 Selected=0x26E8F608
DockNode ID=0x00000001 Parent=0x00000006 SizeRef=514,381 CentralNode=1 Selected=0x26E8F608
DockNode ID=0x00000002 Parent=0x00000006 SizeRef=444,381 Selected=0x62F4D00D