a couple assertions about async loaders
authorhgn <hgodden00@gmail.com>
Sat, 22 Jul 2023 08:08:55 +0000 (09:08 +0100)
committerhgn <hgodden00@gmail.com>
Sat, 22 Jul 2023 08:08:55 +0000 (09:08 +0100)
vg_async.h

index c142ad81e247967c33e853921f678b2d8e1be2ea..825cad845fc93d189c12c8c32d61dd20df2936f9 100644 (file)
@@ -9,6 +9,7 @@
 
 #define VG_GAME
 #include "vg/vg.h"
+VG_STATIC void vg_assert_thread( enum vg_thread_purpose required );
 
 typedef struct vg_async_item vg_async_item;
 
@@ -102,6 +103,7 @@ VG_STATIC vg_async_item *vg_async_alloc( u32 size )
  */
 VG_STATIC void vg_async_stall(void)
 {
+   vg_assert_thread(k_thread_purpose_loader);
    vg_info( "async_stall: %d\n", SDL_SemValue( vg_async.sem_wait_for_flush ) );
    SDL_SemWait( vg_async.sem_wait_for_flush );
 }
@@ -112,6 +114,7 @@ VG_STATIC void vg_async_stall(void)
 VG_STATIC void vg_async_dispatch( vg_async_item *item, 
                                   void (*runner)( void *payload, u32 size ) )
 {
+   vg_assert_thread(k_thread_purpose_loader);
    if( SDL_SemValue(vg_async.sem_wait_for_flush) )
       SDL_SemWait(vg_async.sem_wait_for_flush);
 
@@ -126,6 +129,7 @@ VG_STATIC void vg_async_dispatch( vg_async_item *item,
 VG_STATIC void vg_async_call( void (*runner)( void *payload, u32 size ), 
                               void *payload, u32 size )
 {
+   vg_assert_thread(k_thread_purpose_loader);
    vg_async_item *call = vg_async_alloc(0);
    call->payload = payload;
    call->size = size;