basic async mechanism
[vg.git] / vg.h
diff --git a/vg.h b/vg.h
index f6c5bb672566578023264c95afd256627a14a0fa..7ddd04ef839871dc19b845c60a23d7a02043ec78 100644 (file)
--- a/vg.h
+++ b/vg.h
@@ -106,6 +106,7 @@ VG_STATIC void vg_print_backtrace(void)
     #include "vg_m.h"
     #include "vg_io.h"
     #include "vg_log.h"
+    #include "vg_async.h"
     #include "vg_steam.h"
 
   //#define VG_SYNC_DEBUG
@@ -398,6 +399,11 @@ VG_STATIC void vg_bake_shaders(void)
    vg_release_thread_sync();
 }
 
+void test_async_runner( void *payload, u32 size )
+{
+   vg_success( "Async call test (%p, %u)\n", payload, size );
+}
+
 VG_STATIC void _vg_load_full(void)
 {
    vg_preload();
@@ -410,6 +416,9 @@ VG_STATIC void _vg_load_full(void)
 
    /* client */
    vg_load();
+
+   vg_async_item *test_async = vg_async_alloc( 0 );
+   vg_async_dispatch( test_async, test_async_runner );
 }
 
 VG_STATIC void _vg_process_events(void)
@@ -671,6 +680,7 @@ VG_STATIC void _vg_gameloop(void)
       vg.time_delta = vg.time_frame_delta * vg.time_rate;
       vg.time += vg.time_delta;
 
+      vg_run_async_checked();
       _vg_process_events();
 
       if( vg.window_should_close )
@@ -868,12 +878,12 @@ VG_STATIC void vg_enter( int argc, char *argv[], const char *window_name )
 
    /* Systems init */
    vg_alloc_quota();
-   _vg_log_init();
    _vg_console_init();
    
    vg_console_reg_var( "fps_limit", &vg.fps_limit, k_var_dtype_i32, 0 );
-
    _vg_init_window( window_name );
+
+   vg_async_init();
    
    SDL_SetRelativeMouseMode(1);
    vg.thread_id_main = SDL_GetThreadID(NULL);