Skip to content

Commit d5fc222

Browse files
committed
Don't queue release when exiting
1 parent 26d9089 commit d5fc222

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

source-record.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ struct source_record_filter_context {
4343
int audio_track;
4444
obs_weak_source_t *audio_source;
4545
bool closing;
46+
bool exiting;
4647
long long replay_buffer_duration;
4748
struct vec4 backgroundColor;
4849
bool remove_after_record;
@@ -292,9 +293,14 @@ void release_output_stopped(void *data, calldata_t *cd)
292293
{
293294
UNUSED_PARAMETER(cd);
294295
struct stop_output *so = data;
295-
run_queued((obs_task_t)obs_output_release, so->output);
296-
if (so->context->encoder || so->context->audioEncoder[0])
297-
run_queued(release_encoders, so->context);
296+
if (!so->context->exiting)
297+
run_queued((obs_task_t)obs_output_release, so->output);
298+
if (so->context->encoder || so->context->audioEncoder[0]) {
299+
if (so->context->exiting)
300+
release_encoders(so->context);
301+
else
302+
run_queued(release_encoders, so->context);
303+
}
298304
bfree(data);
299305
}
300306

@@ -1019,8 +1025,11 @@ static void frontend_event(enum obs_frontend_event event, void *data)
10191025
context->last_frontend_event = (int)event;
10201026

10211027
obs_queue_task(OBS_TASK_GRAPHICS, update_task, data, false);
1022-
} else if (event == OBS_FRONTEND_EVENT_EXIT || event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP ||
1023-
event == OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN) {
1028+
} else if (event == OBS_FRONTEND_EVENT_EXIT || event == OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN) {
1029+
context->closing = true;
1030+
context->exiting = true;
1031+
obs_source_update(context->source, NULL);
1032+
} else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP) {
10241033
context->closing = true;
10251034
obs_source_update(context->source, NULL);
10261035
}

0 commit comments

Comments
 (0)