void obs_display_free(obs_display_t display)
{
	pthread_mutex_destroy(&display->draw_callbacks_mutex);
	da_free(display->draw_callbacks);

	if (display->swap) {
		swapchain_destroy(display->swap);
		display->swap = NULL;
	}
}
Exemple #2
0
swapchain_t device_create_swapchain(device_t device, struct gs_init_data *info)
{
	struct gs_swap_chain *swap = bzalloc(sizeof(struct gs_swap_chain));

	swap->device = device;
	swap->info   = *info;
	swap->wi     = gl_windowinfo_create(info);
	if (!swap->wi) {
		blog(LOG_ERROR, "device_create_swapchain (GL) failed");
		swapchain_destroy(swap);
		return NULL;
	}

	if (!gl_platform_init_swapchain(swap)) {
		blog(LOG_ERROR, "gl_platform_init_swapchain  failed");
		swapchain_destroy(swap);
		return NULL;
	}

	return swap;
}
Exemple #3
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);
	}
}