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; }
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; }
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); }
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; }