X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg_loader.h;h=cdd29ebc302d80266e6041865d706571b296b68f;hb=3f8eb36bc705028519cd9e047b24f9b0e97f368e;hp=a776322b8b1ab18b60dcae8113cea53dc382a058;hpb=435cd7d6fc7d086a32ad89fd0548c67994ef738c;p=vg.git diff --git a/vg_loader.h b/vg_loader.h index a776322..cdd29eb 100644 --- a/vg_loader.h +++ b/vg_loader.h @@ -10,10 +10,12 @@ #ifndef VG_LOADER_H #define VG_LOADER_H -#include "common.h" +#define VG_GAME +#include "vg/vg.h" +#include "vg/vg_shader.h" -VG_STATIC void vg_loader_start( void(*pfn)(void *data), void *data ); -VG_STATIC void vg_loader_step( void( *fn_load )(void), void( *fn_free )(void) ); +static void vg_loader_start( void(*pfn)(void *data), void *data ); +static void vg_loader_step( void( *fn_load )(void), void( *fn_free )(void) ); static struct vg_shader _shader_loader = { @@ -88,7 +90,7 @@ static struct vg_loader } vg_loader; -VG_STATIC void _vg_loader_init(void) +static void _vg_loader_init(void) { float quad[] = { 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f }; @@ -108,7 +110,7 @@ VG_STATIC void _vg_loader_init(void) vg_fatal_error( "failed to compile shader" ); } -VG_STATIC void _vg_loader_free(void) +static void _vg_loader_free(void) { vg_info( "vg_loader_free\n" ); glDeleteVertexArrays( 1, &vg_loader.vao ); @@ -124,7 +126,7 @@ VG_STATIC void _vg_loader_free(void) } } -VG_STATIC void _vg_render_log(void) +static void _vg_render_log(void) { #if 0 ui_begin( vg.window_x, vg.window_y ); @@ -159,7 +161,7 @@ VG_STATIC void _vg_render_log(void) #endif } -VG_STATIC void _vg_loader_render_ring( float opacity ) +static void _vg_loader_render_ring( float opacity ) { glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -174,7 +176,7 @@ VG_STATIC void _vg_loader_render_ring( float opacity ) glDrawArrays( GL_TRIANGLES, 0, 6 ); } -VG_STATIC void _vg_loader_render(void) +static void _vg_loader_render(void) { glViewport( 0,0, vg.window_x, vg.window_y ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); @@ -182,14 +184,13 @@ VG_STATIC void _vg_loader_render(void) glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); _vg_render_log(); - vg.loader_ring = 0.8f; + vg.loader_ring = 1.0f; } -VG_STATIC void vg_load_full(void); +static void vg_load_full(void); -VG_STATIC int _vg_loader_thread( void *pfn ) -{ +static int _vg_loader_thread( void *pfn ){ if( setjmp( vg.env_loader_exit ) ) return 0; @@ -204,7 +205,16 @@ VG_STATIC int _vg_loader_thread( void *pfn ) return 0; } -VG_STATIC void vg_loader_start( void(*pfn)(void *data), void *data ) +static int vg_loader_availible(void){ + if( SDL_SemValue( vg.sem_loader ) ){ + if( !(vg_async.start) ) + return 1; + } + + return 0; +} + +static void vg_loader_start( void(*pfn)(void *data), void *data ) { SDL_SemWait( vg.sem_loader ); @@ -215,7 +225,7 @@ VG_STATIC void vg_loader_start( void(*pfn)(void *data), void *data ) /* * Schedule something to be ran now, freed later. Checks in with engine status */ -VG_STATIC void vg_loader_step( void( *fn_load )(void), void( *fn_free )(void) ) +static void vg_loader_step( void( *fn_load )(void), void( *fn_free )(void) ) { if( fn_load ) fn_load();