Match StartAction functions, remove NextFragment (#610)

This commit is contained in:
Christian Semmler
2024-03-01 13:07:07 -05:00
committed by GitHub
parent ba8744ef8f
commit fb6eed9bff
6 changed files with 42 additions and 55 deletions

View File

@@ -32,21 +32,24 @@ MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxD
MxDSAction* action;
if (MxPresenter::StartAction(p_controller, p_action) == SUCCESS) {
// The usual cursor.Next() loop doesn't match here, even though
// the logic is the same. It does match when "deconstructed" into
// the following Head(), Current() and NextFragment() calls,
// but this seems unlikely to be the original code.
// The alpha debug build also uses Next().
cursor.Head();
while (cursor.Current(action)) {
cursor.NextFragment();
MxBool success = FALSE;
const char* presenterName;
MxPresenter* presenter = NULL;
action->CopyFlags(m_action->GetFlags());
cursor.Next();
const char* presenterName = PresenterNameDispatch(*action);
MxPresenter* presenter = (MxPresenter*) factory->Create(presenterName);
if (m_action->GetFlags() & MxDSAction::c_looping) {
action->SetFlags(action->GetFlags() | MxDSAction::c_looping);
}
else if (m_action->GetFlags() & MxDSAction::c_bit3) {
action->SetFlags(action->GetFlags() | MxDSAction::c_bit3);
}
presenterName = PresenterNameDispatch(*action);
presenter = (MxPresenter*) factory->Create(presenterName);
if (presenter && presenter->AddToManager() == SUCCESS) {
presenter->SetCompositePresenter(this);