Browse Source

libobs: Add transition callbacks for starting/stopping

jp9000 8 years ago
parent
commit
e801c766c9
2 changed files with 16 additions and 4 deletions
  1. 13 4
      libobs/obs-source-transition.c
  2. 3 0
      libobs/obs-source.h

+ 13 - 4
libobs/obs-source-transition.c

@@ -365,6 +365,9 @@ bool obs_transition_start(obs_source_t *transition,
 	if (same_as_source && !active)
 		return false;
 
+	if (transition->info.transition_start)
+		transition->info.transition_start(transition->context.data);
+
 	if (transition->transition_use_fixed_duration)
 		duration_ms = transition->transition_fixed_duration;
 
@@ -645,6 +648,14 @@ static void obs_transition_stop(obs_source_t *transition)
 	transition->transition_sources[1] = NULL;
 }
 
+static inline void handle_stop(obs_source_t *transition)
+{
+	if (transition->info.transition_stop)
+		transition->info.transition_stop(transition->context.data);
+	obs_source_dosignal(transition, "source_transition_stop",
+			"transition_stop");
+}
+
 void obs_transition_video_render(obs_source_t *transition,
 		obs_transition_video_render_callback_t callback)
 {
@@ -728,8 +739,7 @@ void obs_transition_video_render(obs_source_t *transition,
 		obs_source_dosignal(transition, "source_transition_video_stop",
 				"transition_video_stop");
 	if (stopped)
-		obs_source_dosignal(transition, "source_transition_stop",
-				"transition_stop");
+		handle_stop(transition);
 }
 
 static inline float get_sample_time(obs_source_t *transition,
@@ -882,8 +892,7 @@ bool obs_transition_audio_render(obs_source_t *transition,
 	}
 
 	if (stopped)
-		obs_source_dosignal(transition, "source_transition_stop",
-				"transition_stop");
+		handle_stop(transition);
 
 	*ts_out = min_ts;
 	return !!min_ts;

+ 3 - 0
libobs/obs-source.h

@@ -425,6 +425,9 @@ struct obs_source_info {
 	void (*enum_all_sources)(void *data,
 			obs_source_enum_proc_t enum_callback,
 			void *param);
+
+	void (*transition_start)(void *data);
+	void (*transition_stop)(void *data);
 };
 
 EXPORT void obs_register_source_s(const struct obs_source_info *info,