NRT and Data objects ensure params can be set in NRT queue immediately after creation (#71)

fixes #70
nix
Owen Green 4 years ago committed by GitHub
parent 8f4784cbe1
commit 7e26fcbce1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -695,7 +695,16 @@ private:
ptr->mClient.setParams(ptr->mParams);
}
else
printNotFound(NRTCommand::mID);
{
mParamsSize = args->size;
mParamsData = (char*) getInterfaceTable()->fRTAlloc(world, asUnsigned(mParamsSize));
std::copy_n(args->data, args->size,mParamsData);
// mArgs = args; GAH WHY ISN"T THIS COPYABLE????
mArgs.init(mParamsSize,mParamsData);
mArgs.count = args->count;
mArgs.rdpos = mParamsData + std::distance(args->data,args->rdpos);
mTryInNRT = true;
}
}
static const char* name()
@ -703,6 +712,34 @@ private:
static std::string cmd = std::string(Wrapper::getName()) + "/setParams";
return cmd.c_str();
}
bool stage2(World* world)
{
if(!mTryInNRT) return false;
if (auto ptr = get(NRTCommand::mID).lock())
{
ptr->mParams.template setParameterValues<ParamsFromOSC>(true, world, mArgs);
Result result = validateParameters(ptr->mParams);
ptr->mClient.setParams(ptr->mParams);
}
else
printNotFound(NRTCommand::mID);
return true;
}
bool stage3(World* world)
{
if(mParamsData) getInterfaceTable()->fRTFree(world, mParamsData);
return false;
}
bool mTryInNRT{false};
char* mParamsData{nullptr};
int mParamsSize;
sc_msg_iter mArgs;
};

Loading…
Cancel
Save