mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 09:39:15 +00:00
libobs: Make internal version of remove encoder
This commit is contained in:
parent
5a68d3aaf5
commit
d70171daa6
|
@ -245,7 +245,9 @@ static void obs_encoder_actually_destroy(obs_encoder_t *encoder)
|
|||
pthread_mutex_lock(&encoder->outputs_mutex);
|
||||
for (size_t i = 0; i < encoder->outputs.num; i++) {
|
||||
struct obs_output *output = encoder->outputs.array[i];
|
||||
obs_output_remove_encoder(output, encoder);
|
||||
// This happens while the output is still "active", so
|
||||
// remove without checking active
|
||||
obs_output_remove_encoder_internal(output, encoder);
|
||||
}
|
||||
da_free(encoder->outputs);
|
||||
pthread_mutex_unlock(&encoder->outputs_mutex);
|
||||
|
|
|
@ -1265,3 +1265,6 @@ extern bool obs_service_initialize(struct obs_service *service,
|
|||
struct obs_output *output);
|
||||
|
||||
void obs_service_destroy(obs_service_t *service);
|
||||
|
||||
void obs_output_remove_encoder_internal(struct obs_output *output,
|
||||
struct obs_encoder *encoder);
|
||||
|
|
|
@ -792,10 +792,10 @@ size_t obs_output_get_mixers(const obs_output_t *output)
|
|||
: 0;
|
||||
}
|
||||
|
||||
void obs_output_remove_encoder(struct obs_output *output,
|
||||
void obs_output_remove_encoder_internal(struct obs_output *output,
|
||||
struct obs_encoder *encoder)
|
||||
{
|
||||
if (!obs_output_valid(output, "obs_output_remove_encoder"))
|
||||
if (!obs_output_valid(output, "obs_output_remove_encoder_internal"))
|
||||
return;
|
||||
|
||||
if (output->video_encoder == encoder) {
|
||||
|
@ -808,6 +808,18 @@ void obs_output_remove_encoder(struct obs_output *output,
|
|||
}
|
||||
}
|
||||
|
||||
void obs_output_remove_encoder(struct obs_output *output,
|
||||
struct obs_encoder *encoder)
|
||||
{
|
||||
if (!obs_output_valid(output, "obs_output_remove_encoder"))
|
||||
return;
|
||||
if (active(output)) {
|
||||
return;
|
||||
}
|
||||
|
||||
obs_output_remove_encoder_internal(output, encoder);
|
||||
}
|
||||
|
||||
void obs_output_set_video_encoder(obs_output_t *output, obs_encoder_t *encoder)
|
||||
{
|
||||
if (!obs_output_valid(output, "obs_output_set_video_encoder"))
|
||||
|
|
Loading…
Reference in a new issue