Example #1
0
static void destroy_log_context(struct log_context *log_context)
{
	pthread_mutex_lock(&log_contexts_mutex);
	da_erase_item(active_log_contexts, &log_context);
	da_push_back(cached_log_contexts, &log_context);
	pthread_mutex_unlock(&log_contexts_mutex);
}
Example #2
0
void obs_source_remove(obs_source_t source)
{
	struct obs_program_data *data = &obs->data;
	size_t id;

	pthread_mutex_lock(&data->sources_mutex);

	if (!source || source->removed)
		return;

	source->removed = true;

	obs_source_addref(source);

	id = da_find(data->sources, &source, 0);
	if (id != DARRAY_INVALID) {
		da_erase_item(data->sources, &source);
		obs_source_release(source);
	}

	pthread_mutex_unlock(&data->sources_mutex);

	obs_source_dosignal(source, "source-remove");
	obs_source_release(source);
}
Example #3
0
void obs_output_destroy(obs_output_t output)
{
	if (output) {
		if (output->valid) {
			if (output->info.active) {
				if (output->info.active(output->data))
					output->info.stop(output->data);
			}

			pthread_mutex_lock(&obs->data.outputs_mutex);
			da_erase_item(obs->data.outputs, &output);
			pthread_mutex_unlock(&obs->data.outputs_mutex);
		}

		if (output->data)
			output->info.destroy(output->data);

		signal_handler_destroy(output->signals);
		proc_handler_destroy(output->procs);

		obs_data_release(output->settings);
		bfree(output->name);
		bfree(output);
	}
}
Example #4
0
static inline void audio_output_removeline(struct audio_output *audio,
		struct audio_line *line)
{
	pthread_mutex_lock(&audio->line_mutex);
	da_erase_item(audio->lines, &line);
	pthread_mutex_unlock(&audio->line_mutex);
	audio_line_destroy_data(line);
}
Example #5
0
void obs_encoder_remove_output(struct obs_encoder *encoder,
		struct obs_output *output)
{
	if (!encoder) return;

	pthread_mutex_lock(&encoder->outputs_mutex);
	da_erase_item(encoder->outputs, &output);
	pthread_mutex_unlock(&encoder->outputs_mutex);
}
Example #6
0
void obs_display_destroy(obs_display_t display)
{
	if (display) {
		pthread_mutex_lock(&obs->data.displays_mutex);
		da_erase_item(obs->data.displays, &display);
		pthread_mutex_unlock(&obs->data.displays_mutex);

		obs_display_free(display);
		bfree(display);
	}
}
Example #7
0
void obs_display_remove_draw_callback(obs_display_t display,
		void (*draw)(void *param, uint32_t cx, uint32_t cy),
		void *param)
{
	if (!display) return;

	struct draw_callback data = {draw, param};

	pthread_mutex_lock(&display->draw_callbacks_mutex);
	da_erase_item(display->draw_callbacks, &data);
	pthread_mutex_unlock(&display->draw_callbacks_mutex);
}
Example #8
0
void audio_monitor_destroy(struct audio_monitor *monitor)
{
	if (monitor) {
		audio_monitor_free(monitor);

		pthread_mutex_lock(&obs->audio.monitoring_mutex);
		da_erase_item(obs->audio.monitors, &monitor);
		pthread_mutex_unlock(&obs->audio.monitoring_mutex);

		bfree(monitor);
	}
}
Example #9
0
void obs_encoder_destroy(obs_encoder_t encoder)
{
	if (encoder) {
		pthread_mutex_lock(&obs->data.encoders_mutex);
		da_erase_item(obs->data.encoders, &encoder);
		pthread_mutex_unlock(&obs->data.encoders_mutex);

		encoder->info.destroy(encoder->data);
		obs_data_release(encoder->settings);
		bfree(encoder->name);
		bfree(encoder);
	}
}
Example #10
0
void obs_display_destroy(obs_display_t display)
{
	if (display) {
		size_t i;

		pthread_mutex_lock(&obs->data.displays_mutex);
		da_erase_item(obs->data.displays, &display);
		pthread_mutex_unlock(&obs->data.displays_mutex);

		for (i = 0; i < MAX_CHANNELS; i++)
			obs_source_release(display->channels[i]);

		swapchain_destroy(display->swap);
		bfree(display);
	}
}
Example #11
0
void obs_source_remove(obs_source_t source)
{
    struct obs_data *data = &obs->data;
    size_t id;

    source->removed = true;

    pthread_mutex_lock(&data->sources_mutex);

    id = da_find(data->sources, &source, 0);
    if (id != DARRAY_INVALID) {
        da_erase_item(data->sources, &source);
        obs_source_release(source);
    }

    pthread_mutex_unlock(&data->sources_mutex);
}