diff --git a/libobs/obs-module.c b/libobs/obs-module.c index 20d68f6de..eac1cc2c3 100644 --- a/libobs/obs-module.c +++ b/libobs/obs-module.c @@ -554,6 +554,9 @@ void obs_register_source_s(const struct obs_source_info *info, size_t size) data.output_flags |= OBS_SOURCE_ASYNC; } + if (data.type == OBS_SOURCE_TYPE_TRANSITION) + data.output_flags |= OBS_SOURCE_COMPOSITE; + if ((data.output_flags & OBS_SOURCE_COMPOSITE) != 0) { if ((data.output_flags & OBS_SOURCE_AUDIO) != 0) { blog(LOG_WARNING, "Source '%s': Composite sources " @@ -580,7 +583,7 @@ void obs_register_source_s(const struct obs_source_info *info, size_t size) CHECK_REQUIRED_VAL_(info, get_height, obs_register_source); } - if ((info->output_flags & OBS_SOURCE_COMPOSITE) != 0) { + if ((data.output_flags & OBS_SOURCE_COMPOSITE) != 0) { CHECK_REQUIRED_VAL_(info, audio_render, obs_register_source); } #undef CHECK_REQUIRED_VAL_ @@ -593,14 +596,6 @@ void obs_register_source_s(const struct obs_source_info *info, size_t size) goto error; } - memcpy(&data, info, size); - - /* mark audio-only filters as an async filter categorically */ - if (data.type == OBS_SOURCE_TYPE_FILTER) { - if ((data.output_flags & OBS_SOURCE_VIDEO) == 0) - data.output_flags |= OBS_SOURCE_ASYNC; - } - if (array) darray_push_back(sizeof(struct obs_source_info), array, &data); da_push_back(obs->source_types, &data);