X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.h;h=8f9e3e7596cd4871dd77ca5417f5e7f6036940c2;hb=92ba950580dd4877935e90682cd4f66fead8fed2;hp=ca31f237817bef194a66b383a6266c2840f51858;hpb=342fcbf6fda017bdd38d56ce0fa7c9e59e589f3b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.h b/skaterift.h index ca31f23..8f9e3e7 100644 --- a/skaterift.h +++ b/skaterift.h @@ -11,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; } @@ -31,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 ); @@ -53,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 */