-VG_STATIC void vg_run_async_checked(void)
-{
- SDL_AtomicLock( &vg_async.sl_index );
-
- while( vg_async.start ){
- vg_async_item *entry = vg_async.start;
-
- if( entry->fn_runner ){
- entry->fn_runner( entry->payload, entry->size );
- vg_async.start = entry->next;
-
- if( vg_async.start == NULL ){
- vg_async.end = NULL;
-
- vg_linear_clear( vg_async.buffer );
-
- if( !SDL_SemValue( vg_async.sem_wait_for_flush ) ){
- SDL_SemPost( vg_async.sem_wait_for_flush );
- }
- }
- }
- else{
- break;
- }
-
- /* TODO: if exceed max frametime.... */
- }
-
- SDL_AtomicUnlock( &vg_async.sl_index );
-}
-
-VG_STATIC void vg_async_init(void)
-{
- vg_async.sem_wait_for_flush = SDL_CreateSemaphore(0);
- vg_async.buffer = vg_create_linear_allocator( NULL, 50*1024*1024,
- VG_MEMORY_REALTIME );
-}
-
-#endif /* VG_ASYNC_H */