|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|