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_service_release(obs_service_t *service) { if (!service) return; obs_weak_service_t *control = service->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_service_destroy(service); obs_weak_service_release(control); } }