From 62d4ca6cdb25532847ff6a2e0fad448a73a04ac1 Mon Sep 17 00:00:00 2001 From: zeromus Date: Fri, 13 Jun 2008 19:15:24 +0000 Subject: [PATCH] slight performance boosts to save/load state when movies are running --- src/state.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/state.cpp b/src/state.cpp index 1d6e7b82..3fa333c6 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -465,33 +465,38 @@ bool FCEUSS_SaveMS(std::ostream* outstream, int compressionLevel) void FCEUSS_Save(char *fname) { - FILE *st=NULL; + std::fstream* st = 0; char *fn; if(geniestage==1) { - FCEU_DispMessage("Cannot save FCS in GG screen."); - return; - } + FCEU_DispMessage("Cannot save FCS in GG screen."); + return; + } if(fname) - st=FCEUD_UTF8fopen(fname, "wb"); + st =FCEUD_UTF8_fstream(fname, "wb"); else { -// FCEU_PrintError("daCurrentState=%d",CurrentState); - st=FCEUD_UTF8fopen(fn=FCEU_MakeFName(FCEUMKF_STATE,CurrentState,0),"wb"); - free(fn); + //FCEU_PrintError("daCurrentState=%d",CurrentState); + st = FCEUD_UTF8_fstream(fn=FCEU_MakeFName(FCEUMKF_STATE,CurrentState,0),"wb"); + free(fn); } if(st == NULL) { - FCEU_DispMessage("State %d save error.",CurrentState); - return; + FCEU_DispMessage("State %d save error.",CurrentState); + return; } - FCEUSS_SaveFP(st,-1); - fclose(st); + if(FCEUMOV_Mode(MOVIEMODE_INACTIVE)) + FCEUSS_SaveMS(st,-1); + else + FCEUSS_SaveMS(st,0); + + st->close(); + delete st; if(!fname) { @@ -517,7 +522,7 @@ bool FCEUSS_LoadFP(std::istream* is, ENUM_SSLOADPARAMS params) if((fp=fopen(fn,"wb"))) { - if(FCEUSS_SaveFP(fp,-1)) + if(FCEUSS_SaveFP(fp,0)) { fclose(fp); } @@ -635,7 +640,7 @@ bool FCEUSS_LoadFP(FILE *st, ENUM_SSLOADPARAMS params) if((fp=fopen(fn,"wb"))) { - if(FCEUSS_SaveFP(fp,-1)) + if(FCEUSS_SaveFP(fp,0)) { fclose(fp); } @@ -920,7 +925,7 @@ void FCEUI_LoadState(char *fname) if((fp = fopen(fn," wb"))) { - if(FCEUSS_SaveFP(fp,-1)) + if(FCEUSS_SaveFP(fp,0)) { fclose(fp); FCEUNET_SendFile(FCEUNPCMD_LOADSTATE, fn);