/****************************************************************************** Copyright (C) 2025 by Dennis Sädtler This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ******************************************************************************/ #include "OBSBasic.hpp" void OBSBasic::CanvasRemoved(void *data, calldata_t *params) { obs_canvas_t *canvas = static_cast(calldata_ptr(params, "canvas")); QMetaObject::invokeMethod(static_cast(data), "RemoveCanvas", Q_ARG(OBSCanvas, OBSCanvas(canvas))); } const OBS::Canvas &OBSBasic::AddCanvas(const std::string &name, obs_video_info *ovi, int flags) { OBSCanvas canvas = obs_canvas_create(name.c_str(), ovi, flags); auto &it = canvases.emplace_back(canvas); OnEvent(OBS_FRONTEND_EVENT_CANVAS_ADDED); return it; } bool OBSBasic::RemoveCanvas(OBSCanvas canvas) { if (!canvas) return false; auto canvas_it = std::find(std::begin(canvases), std::end(canvases), canvas); if (canvas_it != std::end(canvases)) { canvases.erase(canvas_it); OnEvent(OBS_FRONTEND_EVENT_CANVAS_REMOVED); return true; } return false; }