From f0677217ae486c01f0aba78aa5053e2a6273e4cc Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 12 Jun 2023 15:40:37 +0100 Subject: [PATCH] moved savedata to thread --- save.c | 22 +++++++++++++++------- skaterift.h | 1 + 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/save.c b/save.c index 76cfb3c..2c5e8fd 100644 --- a/save.c +++ b/save.c @@ -2,12 +2,25 @@ #define SAVE_C struct { - u8 buf[ 1024 ]; + u8 buf[1024]; u32 len; } static savedata; +static void skaterift_write_savedata_thread(void *){ + FILE *fp = fopen( "save.bkv", "wb" ); + if( fp ){ + fwrite( savedata.buf, savedata.len, 1, fp ); + fclose( fp ); + } + skaterift_end_op(); +} + static void skaterift_write_savedata(void){ + if( skaterift.async_op != k_async_op_none ) return; + + skaterift_begin_op( k_async_op_write_savedata ); + vg_msg sav = {0}; sav.buf = savedata.buf; sav.max = sizeof(savedata.buf); @@ -26,12 +39,7 @@ static void skaterift_write_savedata(void){ vg_msg_end_frame( &sav ); savedata.len = sav.len; - - FILE *fp = fopen( "save.bkv", "wb" ); - if( fp ){ - fwrite( savedata.buf, sav.len, 1, fp ); - fclose( fp ); - } + vg_loader_start( skaterift_write_savedata_thread, NULL ); } static void skaterift_read_savedata(void){ diff --git a/skaterift.h b/skaterift.h index 011985e..c13c78b 100644 --- a/skaterift.h +++ b/skaterift.h @@ -23,6 +23,7 @@ struct{ k_async_op_world_load_preview, k_async_op_board_scan, k_async_op_board_load, + k_async_op_write_savedata, k_workshop_form_op_loading_model, k_workshop_form_op_downloading_submission, k_workshop_form_op_publishing_update, -- 2.25.1