Skip to content

Commit 299f534

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

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

source-record.c

Lines changed: 10 additions & 3 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;
@@ -294,7 +295,10 @@ void release_output_stopped(void *data, calldata_t *cd)
294295
struct stop_output *so = data;
295296
run_queued((obs_task_t)obs_output_release, so->output);
296297
if (so->context->encoder || so->context->audioEncoder[0])
297-
run_queued(release_encoders, so->context);
298+
if (so->context->exiting)
299+
release_encoders(so->context);
300+
else
301+
run_queued(release_encoders, so->context);
298302
bfree(data);
299303
}
300304

@@ -1019,8 +1023,11 @@ static void frontend_event(enum obs_frontend_event event, void *data)
10191023
context->last_frontend_event = (int)event;
10201024

10211025
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) {
1026+
} else if (event == OBS_FRONTEND_EVENT_EXIT || event == OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN) {
1027+
context->closing = true;
1028+
context->exiting = true;
1029+
obs_source_update(context->source, NULL);
1030+
} else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP) {
10241031
context->closing = true;
10251032
obs_source_update(context->source, NULL);
10261033
}

0 commit comments

Comments
 (0)