ogl_beamforming

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

Commit: f1598d4f10a99a9c6d2bff72ed9fec523b11ff41
Parent: aa54e4e901b4474172539a0283c4a3e5963e54b0
Author: Randy Palamar
Date:   Thu,  5 Mar 2026 09:26:10 -0700

lib: fix library version match check

Diffstat:
Mlib/ogl_beamformer_lib.c | 23++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/lib/ogl_beamformer_lib.c b/lib/ogl_beamformer_lib.c @@ -46,6 +46,12 @@ os_open_shared_memory_area(char *name) return result; } +function void +os_close_shared_memory_area(void *memory) +{ + munmap(memory, BEAMFORMER_SHARED_MEMORY_SIZE); +} + #elif OS_WINDOWS W32(b32) UnmapViewOfFile(void *); @@ -94,6 +100,12 @@ os_open_shared_memory_area(char *name) return result; } +function void +os_close_shared_memory_area(void *memory) +{ + UnmapViewOfFile(memory); +} + #endif #define lib_error_check(c, e) lib_error_check_(c, BeamformerLibErrorKind_##e) @@ -109,15 +121,16 @@ lib_error_check_(b32 condition, BeamformerLibErrorKind error_kind) function b32 check_shared_memory(void) { + b32 result = g_beamformer_library_context.bp != 0; if unlikely(!g_beamformer_library_context.bp) { - g_beamformer_library_context.bp = os_open_shared_memory_area(OS_SHARED_MEMORY_NAME); - if (lib_error_check(g_beamformer_library_context.bp != 0, SharedMemory)) { - u32 version = g_beamformer_library_context.bp->version; - lib_error_check(version == BEAMFORMER_SHARED_MEMORY_VERSION, VersionMismatch); + BeamformerSharedMemory *bp = os_open_shared_memory_area(OS_SHARED_MEMORY_NAME); + if (lib_error_check(bp != 0, SharedMemory)) { + result = lib_error_check(bp->version == BEAMFORMER_SHARED_MEMORY_VERSION, VersionMismatch); + if (result) g_beamformer_library_context.bp = bp; + else os_close_shared_memory_area(bp); } } - b32 result = 0; if likely(g_beamformer_library_context.bp) result = lib_error_check(likely(!g_beamformer_library_context.bp->invalid), InvalidAccess); return result;