From ec4317dd2b2cd9dea6e0fba034a28d63a93726ff Mon Sep 17 00:00:00 2001 From: jp9000 Date: Wed, 7 Dec 2016 02:55:06 -0800 Subject: [PATCH] libobs: Fix bug where outputs cannot initialize hotkeys When an output's context data is being created, it cannot register any hotkeys because the output has not initialized its reference counting capability. This is due to the fact that when a hotkey is registered, it creates a weak reference to the source/output/service/encoder. The solution to this is to make sure the output's reference counter data is created before calling the create callback. --- libobs/obs-output.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libobs/obs-output.c b/libobs/obs-output.c index db84cd6c2..1235e7559 100644 --- a/libobs/obs-output.c +++ b/libobs/obs-output.c @@ -129,12 +129,6 @@ obs_output_t *obs_output_create(const char *id, const char *name, if (ret < 0) goto fail; - if (info) - output->context.data = info->create(output->context.settings, - output); - if (!output->context.data) - blog(LOG_ERROR, "Failed to create output '%s'!", name); - output->reconnect_retry_sec = 2; output->reconnect_retry_max = 20; output->valid = true; @@ -146,6 +140,12 @@ obs_output_t *obs_output_create(const char *id, const char *name, &obs->data.outputs_mutex, &obs->data.first_output); + if (info) + output->context.data = info->create(output->context.settings, + output); + if (!output->context.data) + blog(LOG_ERROR, "Failed to create output '%s'!", name); + blog(LOG_DEBUG, "output '%s' (%s) created", name, id); return output;