diff --git a/modules/v4d/include/opencv2/v4d/v4d.hpp b/modules/v4d/include/opencv2/v4d/v4d.hpp index 4cc8e02be..ad5f131ca 100644 --- a/modules/v4d/include/opencv2/v4d/v4d.hpp +++ b/modules/v4d/include/opencv2/v4d/v4d.hpp @@ -115,7 +115,8 @@ class CV_EXPORTS V4D { CLVAContext* clvaContext_ = nullptr; NanoVGContext* nvgContext_ = nullptr; NanoguiContext* nguiContext_ = nullptr; - std::map glContexts_; + std::mutex glCtxMtx_; + std::map glContexts_; bool closed_ = false; Source source_; Sink sink_; @@ -155,13 +156,16 @@ public: * @return The texture object. */ CV_EXPORTS cv::ogl::Texture2D& texture(); + + CV_EXPORTS void gl(std::function fn); + CV_EXPORTS void gl(std::function fn); /*! * Execute function object fn inside an opengl context. * This is how all OpenGL operations should be executed. * @param fn A function object that is passed the size of the framebuffer */ - CV_EXPORTS void gl(std::function fn, uint32_t idx = 0); - CV_EXPORTS void gl(std::function fn, uint32_t idx = 0); + CV_EXPORTS void gl(std::function fn, const uint32_t& idx); + CV_EXPORTS void gl(std::function fn, const uint32_t& idx); /*! * Execute function object fn inside a framebuffer context. * The context acquires the framebuffer from OpenGL (either by up-/download or by cl-gl sharing) @@ -191,12 +195,12 @@ public: * Copy the framebuffer contents to an OutputArray. * @param arr The array to copy to. */ - CV_EXPORTS void copyTo(cv::OutputArray arr); + CV_EXPORTS void copyTo(cv::UMat& arr); /*! * Copy the InputArray contents to the framebuffer. * @param arr The array to copy. */ - CV_EXPORTS void copyFrom(cv::InputArray arr); + CV_EXPORTS void copyFrom(const cv::UMat& arr); /*! * Execute function object fn in a loop. * This function main purpose is to abstract the run loop for portability reasons. @@ -206,12 +210,12 @@ public: /*! * Called to feed an image directly to the framebuffer */ - CV_EXPORTS void feed(cv::InputArray in); + CV_EXPORTS void feed(const cv::UMat& in); /*! * Fetches a copy of frambuffer * @return a copy of the framebuffer */ - CV_EXPORTS _InputOutputArray fetch(); + CV_EXPORTS cv::UMat fetch(); /*! * Called to capture to the framebuffer from a #cv::viz::Source object provided via #V4D::setSource(). @@ -393,7 +397,7 @@ private: CLVAContext& clvaCtx(); NanoVGContext& nvgCtx(); NanoguiContext& nguiCtx(); - GLContext& glCtx(uint32_t idx = 0); + GLContext& glCtx(int32_t idx = 0); bool hasFbCtx(); bool hasClvaCtx();