moved savedata to thread
authorhgn <hgodden00@gmail.com>
Mon, 12 Jun 2023 14:40:37 +0000 (15:40 +0100)
committerhgn <hgodden00@gmail.com>
Mon, 12 Jun 2023 14:40:37 +0000 (15:40 +0100)
save.c
skaterift.h

diff --git a/save.c b/save.c
index 76cfb3cdade24194da2dc6583cd0a50c0745ebb5..2c5e8fd3b8b1302a4db0fe4315290b2bf1d04dc7 100644 (file)
--- 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){
index 011985eff886a2552a991f629f411bfe73aff82d..c13c78b7fb3d455a35955f9ffdb7a43243b83372 100644 (file)
@@ -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,