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; }
bool obs_source_init_handlers(struct obs_source *source) { source->signals = signal_handler_create(); if (!source->signals) return false; source->procs = proc_handler_create(); return (source->procs != NULL); }
static inline bool obs_init_handlers(void) { obs->signals = signal_handler_create(); if (!obs->signals) return false; obs->procs = proc_handler_create(); return (obs->procs != NULL); }
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); }
obs_output_t obs_output_create(const char *id, const char *name, obs_data_t settings) { const struct obs_output_info *info = find_output(id); struct obs_output *output; if (!info) { blog(LOG_ERROR, "Output '%s' not found", id); return NULL; } output = bzalloc(sizeof(struct obs_output)); output->signals = signal_handler_create(); if (!output->signals) goto fail; output->procs = proc_handler_create(); if (!output->procs) goto fail; output->info = *info; output->settings = obs_data_newref(settings); output->data = info->create(output->settings, output); if (!output->data) goto fail; output->name = bstrdup(name); pthread_mutex_lock(&obs->data.outputs_mutex); da_push_back(obs->data.outputs, &output); pthread_mutex_unlock(&obs->data.outputs_mutex); output->valid = true; return output; fail: obs_output_destroy(output); return NULL; }
static inline bool obs_context_data_init_wrap( struct obs_context_data *context, obs_data_t *settings, const char *name) { assert(context); memset(context, 0, sizeof(*context)); pthread_mutex_init_value(&context->rename_cache_mutex); if (pthread_mutex_init(&context->rename_cache_mutex, NULL) < 0) return false; context->signals = signal_handler_create(); if (!context->signals) return false; context->procs = proc_handler_create(); if (!context->procs) return false; context->name = dup_name(name); context->settings = obs_data_newref(settings); return true; }