static void release_registerer(obs_hotkey_t *hotkey) { switch (hotkey->registerer_type) { case OBS_HOTKEY_REGISTERER_FRONTEND: break; case OBS_HOTKEY_REGISTERER_ENCODER: obs_weak_encoder_release(hotkey->registerer); break; case OBS_HOTKEY_REGISTERER_OUTPUT: obs_weak_output_release(hotkey->registerer); break; case OBS_HOTKEY_REGISTERER_SERVICE: obs_weak_service_release(hotkey->registerer); break; case OBS_HOTKEY_REGISTERER_SOURCE: obs_weak_source_release(hotkey->registerer); break; } hotkey->registerer = NULL; }
void obs_output_release(obs_output_t *output) { if (!output) return; obs_weak_output_t *control = output->control; if (obs_ref_release(&control->ref)) { // The order of operations is important here since // get_context_by_name in obs.c relies on weak refs // being alive while the context is listed obs_output_destroy(output); obs_weak_output_release(control); } }