libobs: Do not allow controllable media without flag

The OBS_SOURCE_CONTROLLABLE_MEDIA flag is required for controllable
media callbacks to be usable. These checks are being added so we can
defer most controllable media callbacks to the video thread.
This commit is contained in:
Lain
2024-01-07 15:59:09 -06:00
parent 1151bc9dea
commit 9c9a50643a
+22
View File
@@ -5997,6 +5997,8 @@ void obs_source_media_play_pause(obs_source_t *source, bool pause)
if (!data_valid(source, "obs_source_media_play_pause"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (!source->info.media_play_pause)
return;
@@ -6013,6 +6015,8 @@ void obs_source_media_restart(obs_source_t *source)
if (!data_valid(source, "obs_source_media_restart"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (!source->info.media_restart)
return;
@@ -6026,6 +6030,8 @@ void obs_source_media_stop(obs_source_t *source)
if (!data_valid(source, "obs_source_media_stop"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (!source->info.media_stop)
return;
@@ -6039,6 +6045,8 @@ void obs_source_media_next(obs_source_t *source)
if (!data_valid(source, "obs_source_media_next"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (!source->info.media_next)
return;
@@ -6052,6 +6060,8 @@ void obs_source_media_previous(obs_source_t *source)
if (!data_valid(source, "obs_source_media_previous"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (!source->info.media_previous)
return;
@@ -6065,6 +6075,8 @@ int64_t obs_source_media_get_duration(obs_source_t *source)
if (!data_valid(source, "obs_source_media_get_duration"))
return 0;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return 0;
if (source->info.media_get_duration)
return source->info.media_get_duration(source->context.data);
else
@@ -6076,6 +6088,8 @@ int64_t obs_source_media_get_time(obs_source_t *source)
if (!data_valid(source, "obs_source_media_get_time"))
return 0;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return 0;
if (source->info.media_get_time)
return source->info.media_get_time(source->context.data);
else
@@ -6086,6 +6100,8 @@ void obs_source_media_set_time(obs_source_t *source, int64_t ms)
{
if (!data_valid(source, "obs_source_media_set_time"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
if (source->info.media_set_time)
source->info.media_set_time(source->context.data, ms);
@@ -6095,6 +6111,8 @@ enum obs_media_state obs_source_media_get_state(obs_source_t *source)
{
if (!data_valid(source, "obs_source_media_get_state"))
return OBS_MEDIA_STATE_NONE;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return OBS_MEDIA_STATE_NONE;
if (source->info.media_get_state)
return source->info.media_get_state(source->context.data);
@@ -6106,6 +6124,8 @@ void obs_source_media_started(obs_source_t *source)
{
if (!obs_source_valid(source, "obs_source_media_started"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
obs_source_dosignal(source, NULL, "media_started");
}
@@ -6114,6 +6134,8 @@ void obs_source_media_ended(obs_source_t *source)
{
if (!obs_source_valid(source, "obs_source_media_ended"))
return;
if ((source->info.output_flags & OBS_SOURCE_CONTROLLABLE_MEDIA) == 0)
return;
obs_source_dosignal(source, NULL, "media_ended");
}