X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.h;h=8f9e3e7596cd4871dd77ca5417f5e7f6036940c2;hb=74174e4357c402824302174845f89b975dba5981;hp=5d250a1fe7e0978afcdd278bde4f436823065d95;hpb=63b5ac44f74599b21c4b9b18398c29b797337bea;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.h b/skaterift.h index 5d250a1..8f9e3e7 100644 --- a/skaterift.h +++ b/skaterift.h @@ -2,6 +2,7 @@ #define SKATERIFT_H #include "common.h" +#include "world.h" struct{ enum async_operation{ @@ -10,11 +11,12 @@ struct{ k_async_op_world_preloading, k_async_op_world_loading, k_async_op_world_scan, + k_async_op_world_load_preview, + k_async_op_board_scan, + k_async_op_board_load, k_workshop_form_op_loading_model, k_workshop_form_op_downloading_submission, k_workshop_form_op_publishing_update, - k_workshop_op_item_scan, - k_workshop_op_item_load } async_op; } @@ -30,6 +32,10 @@ static int skaterift_change_world_command( int argc, const char *argv[] ); */ VG_STATIC void skaterift_begin_op( enum async_operation op ) { + if( vg_thread_purpose() == k_thread_purpose_loader ){ + vg_fatal_error( "Can't do that here\n" ); + } + if( skaterift.async_op != k_async_op_none ){ vg_fatal_error( "Async executing op(%d), tried to start op(%d)\n", skaterift.async_op, op ); @@ -52,13 +58,23 @@ VG_STATIC void skaterift_shift_op( enum async_operation op ) vg_info( "Shifting to op( %d )\n", op ); } +VG_STATIC void skaterift_end_op(void); +VG_STATIC void async_skaterift_end_op( void *data, u32 size ){ + skaterift_end_op(); +} + /* * Finished operation, otheres can now run */ VG_STATIC void skaterift_end_op(void) { - vg_info( "Finishing op( %d )\n", skaterift.async_op ); - skaterift.async_op = k_async_op_none; + if( vg_thread_purpose() == k_thread_purpose_loader ){ + vg_async_call( async_skaterift_end_op, NULL, 0 ); + } + else{ + vg_info( "Finishing op( %d )\n", skaterift.async_op ); + skaterift.async_op = k_async_op_none; + } } #endif /* SKATERIFT_H */