diff options
Diffstat (limited to 'AudioManagerCore/src/CAmControlSender.cpp')
-rw-r--r-- | AudioManagerCore/src/CAmControlSender.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/AudioManagerCore/src/CAmControlSender.cpp b/AudioManagerCore/src/CAmControlSender.cpp index a12373c..17a9b2b 100644 --- a/AudioManagerCore/src/CAmControlSender.cpp +++ b/AudioManagerCore/src/CAmControlSender.cpp @@ -115,7 +115,7 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle createFunc = getCreateFunction<IAmControlSend*()>(controlPluginFile, mlibHandle); assert(createFunc!=NULL); mController = createFunc(); - + mControlPluginFile = controlPluginFile; //check libversion std::string version, cVersion(ControlVersion); mController->getInterfaceVersion(version); @@ -153,10 +153,23 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle CAmControlSender::~CAmControlSender() { - close(mPipe[0]); - close(mPipe[1]); - //if (mlibHandle) - // dlclose(mlibHandle); + close(mPipe[0]); + close(mPipe[1]); + + if (mlibHandle) + { + void (*destroyFunc)(IAmControlSend*); + destroyFunc = getDestroyFunction<void(IAmControlSend*)>(mControlPluginFile, mlibHandle); + if (destroyFunc) + { + destroyFunc(mController); + } + else + { + logError("CAmControlSender Dtor: destroyFunc is invalid or not found"); + } + dlclose(mlibHandle); + } } am_Error_e CAmControlSender::hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t & mainConnectionID) |