@@ -80,7 +80,7 @@ void OBSBasic::InitDefaultTransitions()
8080 emit TransitionAdded (QT_UTF8 (obs_source_get_name (tr)), QString::fromStdString (uuid));
8181 }
8282
83- SetCurrentTransition (transitionUuids.back ());
83+ SetCurrentTransition (transitionUuids.back (), true );
8484}
8585
8686void OBSBasic::AddQuickTransitionHotkey (QuickTransition *qt)
@@ -390,8 +390,8 @@ void OBSBasic::SetTransition(OBSSource transition)
390390 if (oldTransition && transition) {
391391 std::string uuid = obs_source_get_uuid (transition);
392392 obs_transition_swap_begin (transition, oldTransition);
393- if (transitions. find (uuid) != transitions. end () )
394- SetCurrentTransition (uuid);
393+ if (currentTransitionUuid != uuid )
394+ SetCurrentTransition (uuid, false );
395395 obs_set_output_source (0 , transition);
396396 obs_transition_swap_end (transition, oldTransition);
397397 } else {
@@ -461,7 +461,7 @@ void OBSBasic::AddTransition(const char *id)
461461
462462 emit TransitionAdded (QString::fromStdString (name), QString::fromStdString (uuid));
463463
464- SetCurrentTransition (uuid);
464+ SetCurrentTransition (uuid, true );
465465
466466 CreatePropertiesWindow (source);
467467 obs_source_release (source);
@@ -526,7 +526,7 @@ void OBSBasic::on_transitionRemove_clicked()
526526
527527 transitionUuids.erase (std::find (transitionUuids.begin (), transitionUuids.end (), currentTransitionUuid));
528528 transitions.erase (currentTransitionUuid);
529- SetCurrentTransition (transitionUuids.back ());
529+ SetCurrentTransition (transitionUuids.back (), true );
530530
531531 OnEvent (OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED);
532532
@@ -1378,7 +1378,7 @@ void OBSBasic::LoadTransitions(obs_data_array_t *transitionsData, obs_load_sourc
13781378 }
13791379 }
13801380
1381- SetCurrentTransition (transitionUuids.back ());
1381+ SetCurrentTransition (transitionUuids.back (), true );
13821382}
13831383
13841384OBSSource OBSBasic::GetOverrideTransition (OBSSource source)
@@ -1414,21 +1414,31 @@ int OBSBasic::GetTransitionDuration()
14141414 return transitionDuration;
14151415}
14161416
1417- void OBSBasic::SetCurrentTransition (const std::string &uuid)
1417+ void OBSBasic::SetCurrentTransition (const std::string &uuid, bool setTransition )
14181418{
1419- if (transitions.find (uuid) == transitions.end ())
1419+ auto transitionIter = transitions.find (uuid);
1420+
1421+ if (currentTransitionUuid == uuid || transitionIter == transitions.end ())
14201422 return ;
14211423
14221424 currentTransitionUuid = uuid;
1425+
1426+ if (setTransition)
1427+ SetTransition (transitionIter->second );
1428+
14231429 emit CurrentTranstionChanged (QString::fromStdString (uuid));
14241430}
14251431
14261432void OBSBasic::SetCurrentTransition (const QString &uuid)
14271433{
1428- if (transitions.find (uuid.toStdString ()) == transitions.end ())
1434+ auto transitionIter = transitions.find (uuid.toStdString ());
1435+
1436+ if (currentTransitionUuid == uuid.toStdString () || transitionIter == transitions.end ())
14291437 return ;
14301438
14311439 currentTransitionUuid = uuid.toStdString ();
1440+ SetTransition (transitionIter->second );
1441+
14321442 emit CurrentTranstionChanged (uuid);
14331443}
14341444
0 commit comments