void obs_display_free(obs_display_t *display) { pthread_mutex_destroy(&display->draw_callbacks_mutex); da_free(display->draw_callbacks); if (display->swap) { gs_swapchain_destroy(display->swap); display->swap = NULL; } }
gs_swapchain_t device_swapchain_create(gs_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_swapchain_create (GL) failed"); gs_swapchain_destroy(swap); return NULL; } if (!gl_platform_init_swapchain(swap)) { blog(LOG_ERROR, "gl_platform_init_swapchain failed"); gs_swapchain_destroy(swap); return NULL; } return swap; }