OBSProjector::~OBSProjector() { bool isMultiview = type == ProjectorType::Multiview; obs_display_remove_draw_callback(GetDisplay(), isMultiview ? OBSRenderMultiview : OBSRender, this); if (source) obs_source_dec_showing(source); if (isMultiview) { for (OBSWeakSource &weakSrc : multiviewScenes) { OBSSource src = OBSGetStrongRef(weakSrc); if (src) obs_source_dec_showing(src); } obs_enter_graphics(); gs_vertexbuffer_destroy(actionSafeMargin); gs_vertexbuffer_destroy(graphicsSafeMargin); gs_vertexbuffer_destroy(fourByThreeSafeMargin); gs_vertexbuffer_destroy(leftLine); gs_vertexbuffer_destroy(topLine); gs_vertexbuffer_destroy(rightLine); obs_leave_graphics(); } if (type == ProjectorType::Multiview) multiviewProjectors.removeAll(this); if (isWindow) windowedProjectors.removeAll(this); App()->DecrementSleepInhibition(); }
void obs_remove_draw_callback( void (*draw)(void *param, uint32_t cx, uint32_t cy), void *param) { if (!obs) return; obs_display_remove_draw_callback(&obs->video.main_display, draw, param); }