obs_fader_t *obs_fader_create(enum obs_fader_type type) { struct obs_fader *fader = bzalloc(sizeof(struct obs_fader)); if (!fader) return NULL; pthread_mutex_init_value(&fader->mutex); if (pthread_mutex_init(&fader->mutex, NULL) != 0) goto fail; fader->signals = signal_handler_create(); if (!fader->signals) goto fail; if (!signal_handler_add_array(fader->signals, fader_signals)) goto fail; switch(type) { case OBS_FADER_CUBIC: fader->def_to_db = cubic_def_to_db; fader->db_to_def = cubic_db_to_def; fader->max_db = 0.0f; fader->min_db = -INFINITY; break; default: goto fail; break; } fader->type = type; return fader; fail: obs_fader_destroy(fader); return NULL; }
static void *scene_create(obs_data_t *settings, struct obs_source *source) { pthread_mutexattr_t attr; struct obs_scene *scene = bmalloc(sizeof(struct obs_scene)); scene->source = source; scene->first_item = NULL; signal_handler_add_array(obs_source_get_signal_handler(source), obs_scene_signals); if (pthread_mutexattr_init(&attr) != 0) goto fail; if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) goto fail; if (pthread_mutex_init(&scene->audio_mutex, &attr) != 0) { blog(LOG_ERROR, "scene_create: Couldn't initialize audio " "mutex"); goto fail; } if (pthread_mutex_init(&scene->video_mutex, &attr) != 0) { blog(LOG_ERROR, "scene_create: Couldn't initialize video " "mutex"); goto fail; } UNUSED_PARAMETER(settings); return scene; fail: pthread_mutexattr_destroy(&attr); bfree(scene); return NULL; }
static bool init_output_handlers(struct obs_output *output, const char *name, obs_data_t settings) { if (!obs_context_data_init(&output->context, settings, name)) return false; signal_handler_add_array(output->context.signals, output_signals); return true; }
bool obs_source_init_context(struct obs_source *source, obs_data_t settings, const char *name) { if (!obs_context_data_init(&source->context, settings, name)) return false; return signal_handler_add_array(source->context.signals, source_signals); }
static bool init_output_handlers(struct obs_output *output, const char *name, obs_data_t *settings, obs_data_t *hotkey_data) { if (!obs_context_data_init(&output->context, OBS_OBJ_TYPE_OUTPUT, settings, name, hotkey_data, false)) return false; signal_handler_add_array(output->context.signals, output_signals); return true; }
static inline bool obs_init_handlers(void) { obs->signals = signal_handler_create(); if (!obs->signals) return false; obs->procs = proc_handler_create(); if (!obs->procs) return false; return signal_handler_add_array(obs->signals, obs_signals); }