Browse Source

libobs: Keep reference to source when rendering

jp9000 10 years ago
parent
commit
11922265de
1 changed files with 11 additions and 4 deletions
  1. 11 4
      libobs/obs-source.c

+ 11 - 4
libobs/obs-source.c

@@ -1412,11 +1412,8 @@ static inline void obs_source_main_render(obs_source_t *source)
 
 static bool ready_async_frame(obs_source_t *source, uint64_t sys_time);
 
-void obs_source_video_render(obs_source_t *source)
+static inline void render_video(obs_source_t *source)
 {
-	if (!obs_source_valid(source, "obs_source_video_render"))
-		return;
-
 	if (source->info.type != OBS_SOURCE_TYPE_FILTER &&
 	    (source->info.output_flags & OBS_SOURCE_VIDEO) == 0)
 		return;
@@ -1445,6 +1442,16 @@ void obs_source_video_render(obs_source_t *source)
 		obs_source_render_async_video(source);
 }
 
+void obs_source_video_render(obs_source_t *source)
+{
+	if (!obs_source_valid(source, "obs_source_video_render"))
+		return;
+
+	obs_source_addref(source);
+	render_video(source);
+	obs_source_release(source);
+}
+
 static uint32_t get_base_width(const obs_source_t *source)
 {
 	bool is_filter = (source->info.type == OBS_SOURCE_TYPE_FILTER);