diff options
-rw-r--r-- | include/libcamera/internal/ipa_proxy.h | 2 | ||||
-rw-r--r-- | src/libcamera/ipa_proxy.cpp | 10 | ||||
-rw-r--r-- | src/libcamera/proxy/ipa_proxy_thread.cpp | 3 |
3 files changed, 15 insertions, 0 deletions
diff --git a/include/libcamera/internal/ipa_proxy.h b/include/libcamera/internal/ipa_proxy.h index aec8f04f..b429ce5a 100644 --- a/include/libcamera/internal/ipa_proxy.h +++ b/include/libcamera/internal/ipa_proxy.h @@ -27,6 +27,8 @@ public: std::string configurationFile(const std::string &file) const; + void stop() override = 0; + protected: std::string resolvePath(const std::string &file) const; diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp index 23be24ad..ff4d7fd1 100644 --- a/src/libcamera/ipa_proxy.cpp +++ b/src/libcamera/ipa_proxy.cpp @@ -146,6 +146,16 @@ std::string IPAProxy::configurationFile(const std::string &name) const } /** + * \fn IPAProxy::stop() + * \brief Stop the IPA proxy + * + * This function stops the IPA and releases all the resources acquired by the + * proxy in start(). Calling stop() when the IPA proxy hasn't been started or + * has already been stopped is valid, the proxy shall treat this as a no-op and + * shall not forward the call to the IPA. + */ + +/** * \brief Find a valid full path for a proxy worker for a given executable name * \param[in] file File name of proxy worker executable * diff --git a/src/libcamera/proxy/ipa_proxy_thread.cpp b/src/libcamera/proxy/ipa_proxy_thread.cpp index aa403e22..eead2883 100644 --- a/src/libcamera/proxy/ipa_proxy_thread.cpp +++ b/src/libcamera/proxy/ipa_proxy_thread.cpp @@ -121,6 +121,9 @@ int IPAProxyThread::start() void IPAProxyThread::stop() { + if (!running_) + return; + running_ = false; proxy_.invokeMethod(&ThreadProxy::stop, ConnectionTypeBlocking); |