Exemplo n.º 1
0
obs_display_t obs_display_create(struct gs_init_data *graphics_data)
{
	struct obs_display *display = bzalloc(sizeof(struct obs_display));

	if (!obs_display_init(display, graphics_data)) {
		obs_display_destroy(display);
		display = NULL;
	}

	return display;
}
Exemplo n.º 2
0
obs_display_t obs_display_create(struct gs_init_data *graphics_data)
{
	struct obs_display *display = bmalloc(sizeof(struct obs_display));
	memset(display, 0, sizeof(struct obs_display));

	if (graphics_data) {
		display->swap = gs_create_swapchain(graphics_data);
		if (!display->swap) {
			obs_display_destroy(display);
			return NULL;
		}
	}

	return display;
}
Exemplo n.º 3
0
static void obs_free_data(void)
{
	struct obs_data *data = &obs->data;
	uint32_t i;

	for (i = 0; i < MAX_CHANNELS; i++)
		obs_set_output_source(i, NULL);

	while (data->displays.num)
		obs_display_destroy(data->displays.array[0]);

	pthread_mutex_lock(&obs->data.sources_mutex);
	for (i = 0; i < data->sources.num; i++)
		obs_source_release(data->sources.array[i]);
	da_free(data->sources);
	pthread_mutex_unlock(&obs->data.sources_mutex);
}
Exemplo n.º 4
0
obs_display_t *obs_display_create(const struct gs_init_data *graphics_data)
{
	struct obs_display *display = bzalloc(sizeof(struct obs_display));

	gs_enter_context(obs->video.graphics);

	if (!obs_display_init(display, graphics_data)) {
		obs_display_destroy(display);
		display = NULL;
	} else {
		pthread_mutex_lock(&obs->data.displays_mutex);
		display->prev_next      = &obs->data.first_display;
		display->next           = obs->data.first_display;
		obs->data.first_display = display;
		if (display->next)
			display->next->prev_next = &display->next;
		pthread_mutex_unlock(&obs->data.displays_mutex);
	}

	gs_leave_context();

	return display;
}