diff --git a/src/sl/tracerestrict_sl.cpp b/src/sl/tracerestrict_sl.cpp index 419002d73f..d49b42fbd8 100644 --- a/src/sl/tracerestrict_sl.cpp +++ b/src/sl/tracerestrict_sl.cpp @@ -42,27 +42,17 @@ static void Save_TRRM() } } -/** program length save header struct */ -struct TraceRestrictProgramStub { - uint32_t length; -}; - -static const SaveLoad _trace_restrict_program_stub_desc[] = { - SLE_VAR(TraceRestrictProgramStub, length, SLE_UINT32), -}; - /** * Load program pool */ static void Load_TRRP() { int index; - TraceRestrictProgramStub stub; while ((index = SlIterateArray()) != -1) { TraceRestrictProgram *prog = new (index) TraceRestrictProgram(); - SlObject(&stub, _trace_restrict_program_stub_desc); - prog->items.resize(stub.length); - if (stub.length > 0) SlArray(prog->items.data(), stub.length, SLE_UINT32); + uint32_t prog_length = SlReadUint32(); + prog->items.resize(prog_length); + if (prog_length > 0) SlArray(prog->items.data(), prog_length, SLE_UINT32); if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) { for (size_t i = 0; i < prog->items.size(); i++) { TraceRestrictItem &item = prog->items[i]; // note this is a reference, @@ -107,17 +97,6 @@ static void Load_TRRP() } } -/** - * Save a program, used by SlAutolength - */ -static void RealSave_TRRP(TraceRestrictProgram *prog) -{ - TraceRestrictProgramStub stub; - stub.length = (uint32_t)prog->items.size(); - SlObject(&stub, _trace_restrict_program_stub_desc); - SlArray(prog->items.data(), stub.length, SLE_UINT32); -} - /** * Save program pool */ @@ -125,7 +104,9 @@ static void Save_TRRP() { for (TraceRestrictProgram *prog : TraceRestrictProgram::Iterate()) { SlSetArrayIndex(prog->index); - SlAutolength((AutolengthProc*) RealSave_TRRP, prog); + SlSetLength(4 + (prog->items.size() * 4)); + SlWriteUint32((uint32_t)prog->items.size()); + SlArray(prog->items.data(), prog->items.size(), SLE_UINT32); } } @@ -203,14 +184,6 @@ static void Load_TRRC() } } -/** - * Save a counter, used by SlAutolength - */ -static void RealSave_TRRC(TraceRestrictCounter *ctr) -{ - SlObject(ctr, _trace_restrict_counter_desc); -} - /** * Save counter pool */ @@ -218,7 +191,7 @@ static void Save_TRRC() { for (TraceRestrictCounter *ctr : TraceRestrictCounter::Iterate()) { SlSetArrayIndex(ctr->index); - SlAutolength((AutolengthProc*) RealSave_TRRC, ctr); + SlObject(ctr, _trace_restrict_counter_desc); } }