|
@@ -2058,13 +2058,18 @@ void obs_source_process_filter(obs_source_t *filter, gs_effect_t *effect,
|
|
GS_ZS_NONE);
|
|
GS_ZS_NONE);
|
|
|
|
|
|
if (gs_texrender_begin(filter->filter_texrender, cx, cy)) {
|
|
if (gs_texrender_begin(filter->filter_texrender, cx, cy)) {
|
|
|
|
+ bool custom_draw = (parent_flags & OBS_SOURCE_CUSTOM_DRAW) != 0;
|
|
|
|
+ bool async = (parent_flags & OBS_SOURCE_ASYNC) != 0;
|
|
struct vec4 clear_color;
|
|
struct vec4 clear_color;
|
|
|
|
|
|
vec4_zero(&clear_color);
|
|
vec4_zero(&clear_color);
|
|
gs_clear(GS_CLEAR_COLOR, &clear_color, 0.0f, 0);
|
|
gs_clear(GS_CLEAR_COLOR, &clear_color, 0.0f, 0);
|
|
gs_ortho(0.0f, (float)cx, 0.0f, (float)cy, -100.0f, 100.0f);
|
|
gs_ortho(0.0f, (float)cx, 0.0f, (float)cy, -100.0f, 100.0f);
|
|
|
|
|
|
- obs_source_video_render(target);
|
|
|
|
|
|
+ if (target == parent && !custom_draw && !async)
|
|
|
|
+ obs_source_default_render(target, use_matrix);
|
|
|
|
+ else
|
|
|
|
+ obs_source_video_render(target);
|
|
|
|
|
|
gs_texrender_end(filter->filter_texrender);
|
|
gs_texrender_end(filter->filter_texrender);
|
|
}
|
|
}
|