mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-03-27 10:52:16 -04:00
libobs, frontend: Signal transition_stop for cancelled transitions
This commit is contained in:
@@ -127,6 +127,11 @@ void OBSBasic::RemoveQuickTransitionHotkey(QuickTransition *qt)
|
||||
|
||||
void OBSBasic::InitTransition(obs_source_t *transition)
|
||||
{
|
||||
auto onTransitionStart = [](void *data, calldata_t *) {
|
||||
OBSBasic *window = (OBSBasic *)data;
|
||||
QMetaObject::invokeMethod(window, "TransitionStarted", Qt::QueuedConnection);
|
||||
};
|
||||
|
||||
auto onTransitionStop = [](void *data, calldata_t *) {
|
||||
OBSBasic *window = (OBSBasic *)data;
|
||||
QMetaObject::invokeMethod(window, "TransitionStopped", Qt::QueuedConnection);
|
||||
@@ -138,6 +143,7 @@ void OBSBasic::InitTransition(obs_source_t *transition)
|
||||
};
|
||||
|
||||
signal_handler_t *handler = obs_source_get_signal_handler(transition);
|
||||
signal_handler_connect(handler, "transition_start", onTransitionStart, this);
|
||||
signal_handler_connect(handler, "transition_video_stop", onTransitionStop, this);
|
||||
signal_handler_connect(handler, "transition_stop", onTransitionFullStop, this);
|
||||
}
|
||||
@@ -228,6 +234,11 @@ void OBSBasic::TransitionToScene(OBSScene scene, bool force)
|
||||
TransitionToScene(source, force);
|
||||
}
|
||||
|
||||
void OBSBasic::TransitionStarted()
|
||||
{
|
||||
EnableTransitionWidgets(false);
|
||||
}
|
||||
|
||||
void OBSBasic::TransitionStopped()
|
||||
{
|
||||
if (swapScenesMode) {
|
||||
@@ -362,8 +373,6 @@ void OBSBasic::TransitionToScene(OBSSource source, bool force, bool quickTransit
|
||||
|
||||
enum obs_transition_mode mode = manual ? OBS_TRANSITION_MODE_MANUAL : OBS_TRANSITION_MODE_AUTO;
|
||||
|
||||
EnableTransitionWidgets(false);
|
||||
|
||||
bool success = obs_transition_start(transition, mode, duration, source);
|
||||
|
||||
if (!success)
|
||||
@@ -763,7 +772,8 @@ void OBSBasic::TBarChanged(int value)
|
||||
tBarActive = true;
|
||||
}
|
||||
|
||||
obs_transition_set_manual_time(transition, (float)value / T_BAR_PRECISION_F);
|
||||
float clampedValue = std::clamp<float>((float)value / T_BAR_PRECISION_F, 0.01f, 0.99f);
|
||||
obs_transition_set_manual_time(transition, clampedValue);
|
||||
|
||||
OnEvent(OBS_FRONTEND_EVENT_TBAR_VALUE_CHANGED);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user