summaryrefslogtreecommitdiff
path: root/AudioManagerCore/src/CAmControlSender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'AudioManagerCore/src/CAmControlSender.cpp')
-rw-r--r--AudioManagerCore/src/CAmControlSender.cpp23
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)