libobs: Fix output shutdown order
When obs_output_actual_stop is called on shutdown, it should wait for the output to fully stop before doing anything, and then it should wait for the data capture to end. The service should not be removed until after the output has stopped, otherwise it could result in a possible memory leak on stop. Packets should be freed last.
This commit is contained in:
parent
d7db0b8b01
commit
e13dd53376
@ -170,16 +170,18 @@ void obs_output_destroy(obs_output_t *output)
|
||||
|
||||
if (output->valid && active(output))
|
||||
obs_output_actual_stop(output, true, 0);
|
||||
if (output->service)
|
||||
output->service->output = NULL;
|
||||
|
||||
os_event_wait(output->stopping_event);
|
||||
if (data_capture_ending(output))
|
||||
pthread_join(output->end_data_capture_thread, NULL);
|
||||
free_packets(output);
|
||||
|
||||
if (output->service)
|
||||
output->service->output = NULL;
|
||||
if (output->context.data)
|
||||
output->info.destroy(output->context.data);
|
||||
|
||||
free_packets(output);
|
||||
|
||||
if (output->video_encoder) {
|
||||
obs_encoder_remove_output(output->video_encoder,
|
||||
output);
|
||||
|
Loading…
x
Reference in New Issue
Block a user