ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: 5d94a74e8838d1ad6445ef4a6c9362c99a875010
Parent: 9f38169f69a1c448e6393ca2338a39b2835296df
Author: Randy Palamar
Date:   Sat,  5 Jul 2025 16:23:01 -0600

ui: don't draw X-Plane before frame is available

Diffstat:
Mui.c | 26+++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/ui.c b/ui.c @@ -1559,6 +1559,15 @@ render_3D_xplane(BeamformerUI *ui, BeamformerFrameView *view, u32 program) } function b32 +frame_view_ready_to_present(BeamformerUI *ui, BeamformerFrameView *view) +{ + b32 result = !uv2_equal((uv2){0}, view->texture_dim) && view->frame; + result |= view->kind == BeamformerFrameViewKind_3DXPlane && + ui->latest_plane[BeamformerViewPlaneTag_Count]; + return result; +} + +function b32 view_update(BeamformerUI *ui, BeamformerFrameView *view) { if (view->kind == BeamformerFrameViewKind_Latest) { @@ -1582,9 +1591,10 @@ view_update(BeamformerUI *ui, BeamformerFrameView *view) resize_frame_view(view, target, 1); view->dirty = 1; } + view->dirty |= ui->frame_view_render_context->updated; + view->dirty |= view->kind == BeamformerFrameViewKind_3DXPlane; - b32 result = view->kind == BeamformerFrameViewKind_3DXPlane; - result |= (ui->frame_view_render_context->updated || view->dirty) && view->frame; + b32 result = frame_view_ready_to_present(ui, view) && view->dirty; return result; } @@ -1648,12 +1658,6 @@ update_frame_views(BeamformerUI *ui, Rect window) } } -function b32 -frame_view_ready_to_present(BeamformerFrameView *view) -{ - return !uv2_equal((uv2){0}, view->texture_dim) && view->frame; -} - function Color colour_from_normalized(v4 rgba) { @@ -2760,10 +2764,10 @@ draw_ui_view(BeamformerUI *ui, Variable *ui_view, Rect r, v2 mouse, TextSpec tex }break; case VT_BEAMFORMER_FRAME_VIEW: { BeamformerFrameView *bv = var->generic; - if (bv->kind == BeamformerFrameViewKind_3DXPlane) { + if (frame_view_ready_to_present(ui, bv)) { + if (bv->kind == BeamformerFrameViewKind_3DXPlane) draw_3D_xplane_frame_view(ui, ui->arena, var, r, mouse); - } else { - if (frame_view_ready_to_present(bv)) + else draw_beamformer_frame_view(ui, ui->arena, var, r, mouse); } } break;