summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Schuldt <michael.schuldt@bmw.de>2012-09-04 14:18:10 +0200
committerMichael Schuldt <michael.schuldt@bmw.de>2012-09-04 14:18:10 +0200
commit04540f26e81bb2f1f6181913b3783eedcb43fbd6 (patch)
treecdc6f98f08a0538ac5a38dfa24a8fef6b7515919
parent86df86252f33ba27e1e521a7f35d84872fc0e9f3 (diff)
downloadlayer_management-04540f26e81bb2f1f6181913b3783eedcb43fbd6.tar.gz
IpcModule: Fix Memory Leak therefore introducing destroyMessage functionalityivi-layer-management_version_0_9_7_rc2
- This patch will fix a huge memory leak on both client and generic communicator - This memory leak will not occur on all ipc module only if dbus is used. - To guarantee that the ipc message is successfull destroyed destroyMessage functionality is added.
-rw-r--r--LayerManagerClient/ilmClient/src/generic_ilm_client.c235
-rw-r--r--LayerManagerPlugins/Communicators/GenericCommunicator/src/GenericCommunicator.cpp1
-rw-r--r--LayerManagerPlugins/IpcModules/DbusIpcModule/include/common.h1
-rw-r--r--LayerManagerPlugins/IpcModules/DbusIpcModule/src/message.c31
-rw-r--r--LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModule.h1
-rw-r--r--LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModuleLoader.h1
-rw-r--r--LayerManagerPlugins/IpcModules/IpcModuleLoader/src/IpcModuleLoader.c1
-rw-r--r--LayerManagerPlugins/IpcModules/TcpIpcModule/src/message.c9
8 files changed, 197 insertions, 83 deletions
diff --git a/LayerManagerClient/ilmClient/src/generic_ilm_client.c b/LayerManagerClient/ilmClient/src/generic_ilm_client.c
index 6c0b42c..5c1990f 100644
--- a/LayerManagerClient/ilmClient/src/generic_ilm_client.c
+++ b/LayerManagerClient/ilmClient/src/generic_ilm_client.c
@@ -58,7 +58,8 @@ ilmErrorTypes ilm_init()
&& gIpcModule.createMessage("ServiceConnect")
&& gIpcModule.appendUint(pid)
&& gIpcModule.sendMessage()
- && gIpcModule.receiveMessage(gReceiveTimeout))
+ && gIpcModule.receiveMessage(gReceiveTimeout)
+ && gIpcModule.destroyMessage())
{
result = ILM_SUCCESS;
}
@@ -77,6 +78,7 @@ ilmErrorTypes ilm_destroy()
&& gIpcModule.appendUint(pid)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
+ && gIpcModule.destroyMessage()
&& gIpcModule.destroy())
{
result = ILM_SUCCESS;
@@ -114,7 +116,8 @@ ilmErrorTypes ilm_getPropertiesOfSurface(t_ilm_uint surfaceID, struct ilmSurface
&& gIpcModule.getUint(&pSurfaceProperties->updateCounter)
&& gIpcModule.getUint(&pSurfaceProperties->pixelformat)
&& gIpcModule.getUint(&pSurfaceProperties->nativeSurface)
- && gIpcModule.getUint(&pSurfaceProperties->inputDevicesAcceptance))
+ && gIpcModule.getUint(&pSurfaceProperties->inputDevicesAcceptance)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -146,7 +149,8 @@ ilmErrorTypes ilm_getPropertiesOfLayer(t_ilm_uint layerID, struct ilmLayerProper
&& gIpcModule.getUint(&pLayerProperties->destHeight)
&& gIpcModule.getUint(&pLayerProperties->orientation)
&& gIpcModule.getBool(&pLayerProperties->visibility)
- && gIpcModule.getUint(&pLayerProperties->type))
+ && gIpcModule.getUint(&pLayerProperties->type)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -165,7 +169,8 @@ ilmErrorTypes ilm_getNumberOfHardwareLayers(t_ilm_uint screenID, t_ilm_uint* pNu
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pNumberOfHardwareLayers))
+ && gIpcModule.getUint(pNumberOfHardwareLayers)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -185,7 +190,8 @@ ilmErrorTypes ilm_getScreenResolution(t_ilm_uint screenID, t_ilm_uint* pWidth, t
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
&& gIpcModule.getUint(pWidth)
- && gIpcModule.getUint(pHeight))
+ && gIpcModule.getUint(pHeight)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -203,7 +209,8 @@ ilmErrorTypes ilm_getLayerIDs(t_ilm_int* pLength, t_ilm_layer** ppArray)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -222,7 +229,8 @@ ilmErrorTypes ilm_getLayerIDsOnScreen(t_ilm_uint screenId, t_ilm_int* pLength, t
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -240,7 +248,8 @@ ilmErrorTypes ilm_getSurfaceIDs(t_ilm_int* pLength, t_ilm_surface** ppArray)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -258,7 +267,8 @@ ilmErrorTypes ilm_getLayerGroupIDs(t_ilm_int* pLength, t_ilm_layergroup** ppArra
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -276,7 +286,8 @@ ilmErrorTypes ilm_getSurfaceGroupIDs(t_ilm_int* pLength, t_ilm_surfacegroup** pp
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -295,7 +306,8 @@ ilmErrorTypes ilm_getSurfaceIDsOnLayer(t_ilm_layer layer, t_ilm_int* pLength, t_
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppArray, pLength))
+ && gIpcModule.getUintArray(ppArray, pLength)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -315,7 +327,8 @@ ilmErrorTypes ilm_layerCreate(t_ilm_layer* pLayerId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayerId))
+ && gIpcModule.getUint(pLayerId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -326,7 +339,8 @@ ilmErrorTypes ilm_layerCreate(t_ilm_layer* pLayerId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayerId))
+ && gIpcModule.getUint(pLayerId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -349,7 +363,8 @@ ilmErrorTypes ilm_layerCreateWithDimension(t_ilm_layer* pLayerId, t_ilm_uint wid
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayerId))
+ && gIpcModule.getUint(pLayerId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -362,7 +377,8 @@ ilmErrorTypes ilm_layerCreateWithDimension(t_ilm_layer* pLayerId, t_ilm_uint wid
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayerId))
+ && gIpcModule.getUint(pLayerId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -380,7 +396,8 @@ ilmErrorTypes ilm_layerRemove(t_ilm_layer layerId)
&& gIpcModule.appendUint(layerId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -398,7 +415,8 @@ ilmErrorTypes ilm_layerAddSurface(t_ilm_layer layerId, t_ilm_surface surfaceId)
&& gIpcModule.appendUint(layerId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -416,7 +434,8 @@ ilmErrorTypes ilm_layerRemoveSurface(t_ilm_layer layerId, t_ilm_surface surfaceI
&& gIpcModule.appendUint(layerId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -435,7 +454,8 @@ ilmErrorTypes ilm_layerGetType(t_ilm_layer layerId, ilmLayerType* pLayerType)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayerType))
+ && gIpcModule.getUint(pLayerType)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -453,7 +473,8 @@ ilmErrorTypes ilm_layerSetVisibility(t_ilm_layer layerId, t_ilm_bool newVisibili
&& gIpcModule.appendBool(newVisibility)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -472,7 +493,8 @@ ilmErrorTypes ilm_layerGetVisibility(t_ilm_layer layerId, t_ilm_bool *pVisibilit
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getBool(pVisibility))
+ && gIpcModule.getBool(pVisibility)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -490,7 +512,8 @@ ilmErrorTypes ilm_layerSetOpacity(t_ilm_layer layerId, t_ilm_float opacity)
&& gIpcModule.appendDouble(opacity)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -509,7 +532,8 @@ ilmErrorTypes ilm_layerGetOpacity(t_ilm_layer layerId, t_ilm_float *pOpacity)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getDouble(pOpacity))
+ && gIpcModule.getDouble(pOpacity)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -530,7 +554,8 @@ ilmErrorTypes ilm_layerSetSourceRectangle(t_ilm_layer layerId, t_ilm_uint x, t_i
&& gIpcModule.appendUint(height)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -551,7 +576,8 @@ ilmErrorTypes ilm_layerSetDestinationRectangle(t_ilm_layer layerId, t_ilm_int x,
&& gIpcModule.appendUint(height)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -571,7 +597,8 @@ ilmErrorTypes ilm_layerGetDimension(t_ilm_layer layerId, t_ilm_uint *pDimension)
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
&& gIpcModule.getUint(&pDimension[0])
- && gIpcModule.getUint(&pDimension[1]))
+ && gIpcModule.getUint(&pDimension[1])
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -591,7 +618,8 @@ ilmErrorTypes ilm_layerSetDimension(t_ilm_layer layerId, t_ilm_uint *pDimension)
&& gIpcModule.appendUint(pDimension[1])
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -611,7 +639,8 @@ ilmErrorTypes ilm_layerGetPosition(t_ilm_layer layerId, t_ilm_uint *pPosition)
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
&& gIpcModule.getUint(&pPosition[0])
- && gIpcModule.getUint(&pPosition[1]))
+ && gIpcModule.getUint(&pPosition[1])
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -631,7 +660,8 @@ ilmErrorTypes ilm_layerSetPosition(t_ilm_layer layerId, t_ilm_uint *pPosition)
&& gIpcModule.appendUint(pPosition[1])
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -649,7 +679,8 @@ ilmErrorTypes ilm_layerSetOrientation(t_ilm_layer layerId, ilmOrientation orient
&& gIpcModule.appendUint(orientation)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -668,7 +699,8 @@ ilmErrorTypes ilm_layerGetOrientation(t_ilm_layer layerId, ilmOrientation *pOrie
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pOrientation))
+ && gIpcModule.getUint(pOrientation)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -695,7 +727,8 @@ ilmErrorTypes ilm_layerSetRenderOrder(t_ilm_layer layerId, t_ilm_layer *pSurface
&& gIpcModule.appendUintArray(pSurfaceId, number)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -714,7 +747,8 @@ ilmErrorTypes ilm_layerGetCapabilities(t_ilm_layer layerId, t_ilm_layercapabilit
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pCapabilities))
+ && gIpcModule.getUint(pCapabilities)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -733,7 +767,8 @@ ilmErrorTypes ilm_layerTypeGetCapabilities(ilmLayerType layerType, t_ilm_layerca
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pCapabilities))
+ && gIpcModule.getUint(pCapabilities)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -754,7 +789,8 @@ ilmErrorTypes ilm_layergroupCreate(t_ilm_layergroup *pLayergroup)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayergroup))
+ && gIpcModule.getUint(pLayergroup)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -766,7 +802,8 @@ ilmErrorTypes ilm_layergroupCreate(t_ilm_layergroup *pLayergroup)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pLayergroup))
+ && gIpcModule.getUint(pLayergroup)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -784,7 +821,8 @@ ilmErrorTypes ilm_layergroupRemove(t_ilm_layergroup group)
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -802,7 +840,8 @@ ilmErrorTypes ilm_layergroupAddLayer(t_ilm_layergroup group, t_ilm_layer layer)
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -820,7 +859,8 @@ ilmErrorTypes ilm_layergroupRemoveLayer(t_ilm_layergroup group, t_ilm_layer laye
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -838,7 +878,8 @@ ilmErrorTypes ilm_layergroupSetVisibility(t_ilm_layergroup group, t_ilm_bool new
&& gIpcModule.appendBool(newVisibility)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -856,7 +897,8 @@ ilmErrorTypes ilm_layergroupSetOpacity(t_ilm_layergroup group, t_ilm_float opaci
&& gIpcModule.appendDouble(opacity)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -880,7 +922,8 @@ ilmErrorTypes ilm_surfaceCreate(t_ilm_nativehandle nativehandle, t_ilm_int width
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfaceId))
+ && gIpcModule.getUint(pSurfaceId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -895,7 +938,8 @@ ilmErrorTypes ilm_surfaceCreate(t_ilm_nativehandle nativehandle, t_ilm_int width
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfaceId))
+ && gIpcModule.getUint(pSurfaceId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -916,7 +960,8 @@ ilmErrorTypes ilm_surfaceInitialize(t_ilm_surface *pSurfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfaceId))
+ && gIpcModule.getUint(pSurfaceId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -927,7 +972,8 @@ ilmErrorTypes ilm_surfaceInitialize(t_ilm_surface *pSurfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfaceId))
+ && gIpcModule.getUint(pSurfaceId)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -949,7 +995,8 @@ ilmErrorTypes ilm_surfaceSetNativeContent(t_ilm_nativehandle nativehandle, t_ilm
&& gIpcModule.appendUint(pixelFormat)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -966,7 +1013,8 @@ ilmErrorTypes ilm_surfaceRemoveNativeContent(t_ilm_surface surfaceId)
&& gIpcModule.appendUint(surfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -983,7 +1031,8 @@ ilmErrorTypes ilm_surfaceRemove(t_ilm_surface surfaceId)
&& gIpcModule.appendUint(surfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1001,7 +1050,8 @@ ilmErrorTypes ilm_surfaceSetVisibility(t_ilm_surface surfaceId, t_ilm_bool newVi
&& gIpcModule.appendBool(newVisibility)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1020,7 +1070,8 @@ ilmErrorTypes ilm_surfaceGetVisibility(t_ilm_surface surfaceId, t_ilm_bool *pVis
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getBool(pVisibility))
+ && gIpcModule.getBool(pVisibility)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1038,7 +1089,8 @@ ilmErrorTypes ilm_surfaceSetOpacity(t_ilm_surface surfaceId, t_ilm_float opacity
&& gIpcModule.appendDouble(opacity)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1057,7 +1109,8 @@ ilmErrorTypes ilm_surfaceGetOpacity(t_ilm_surface surfaceId, t_ilm_float *pOpaci
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getDouble(pOpacity))
+ && gIpcModule.getDouble(pOpacity)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1078,7 +1131,8 @@ ilmErrorTypes ilm_surfaceSetSourceRectangle(t_ilm_surface surfaceId, t_ilm_int x
&& gIpcModule.appendUint(height)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1099,7 +1153,8 @@ ilmErrorTypes ilm_surfaceSetDestinationRectangle(t_ilm_surface surfaceId, t_ilm_
&& gIpcModule.appendUint(height)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1119,7 +1174,8 @@ ilmErrorTypes ilm_surfaceGetDimension(t_ilm_surface surfaceId, t_ilm_uint *pDime
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
&& gIpcModule.getUint(&pDimension[0])
- && gIpcModule.getUint(&pDimension[1]))
+ && gIpcModule.getUint(&pDimension[1])
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1139,7 +1195,8 @@ ilmErrorTypes ilm_surfaceSetDimension(t_ilm_surface surfaceId, t_ilm_uint *pDime
&& gIpcModule.appendUint(pDimension[1])
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1159,7 +1216,8 @@ ilmErrorTypes ilm_surfaceGetPosition(t_ilm_surface surfaceId, t_ilm_uint *pPosit
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
&& gIpcModule.getUint(&pPosition[0])
- && gIpcModule.getUint(&pPosition[1]))
+ && gIpcModule.getUint(&pPosition[1])
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1179,7 +1237,8 @@ ilmErrorTypes ilm_surfaceSetPosition(t_ilm_surface surfaceId, t_ilm_uint *pPosit
&& gIpcModule.appendUint(pPosition[1])
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1197,7 +1256,8 @@ ilmErrorTypes ilm_surfaceSetOrientation(t_ilm_surface surfaceId, ilmOrientation
&& gIpcModule.appendUint(orientation)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1216,7 +1276,8 @@ ilmErrorTypes ilm_surfaceGetOrientation(t_ilm_surface surfaceId, ilmOrientation
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pOrientation))
+ && gIpcModule.getUint(pOrientation)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1235,7 +1296,8 @@ ilmErrorTypes ilm_surfaceGetPixelformat(t_ilm_layer surfaceId, ilmPixelFormat *p
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pPixelformat))
+ && gIpcModule.getUint(pPixelformat)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1275,7 +1337,8 @@ ilmErrorTypes ilm_surfacegroupCreate(t_ilm_surfacegroup *pSurfacegroup)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfacegroup))
+ && gIpcModule.getUint(pSurfacegroup)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1287,7 +1350,8 @@ ilmErrorTypes ilm_surfacegroupCreate(t_ilm_surfacegroup *pSurfacegroup)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfacegroup))
+ && gIpcModule.getUint(pSurfacegroup)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1305,7 +1369,8 @@ ilmErrorTypes ilm_surfacegroupRemove(t_ilm_surfacegroup group)
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1323,7 +1388,8 @@ ilmErrorTypes ilm_surfacegroupAddSurface(t_ilm_surfacegroup group, t_ilm_surface
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1341,7 +1407,8 @@ ilmErrorTypes ilm_surfacegroupRemoveSurface(t_ilm_surfacegroup group, t_ilm_surf
&& gIpcModule.appendUint(group)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1359,7 +1426,8 @@ ilmErrorTypes ilm_surfacegroupSetVisibility(t_ilm_surfacegroup group, t_ilm_bool
&& gIpcModule.appendBool(newVisibility)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1377,7 +1445,8 @@ ilmErrorTypes ilm_surfacegroupSetOpacity(t_ilm_surfacegroup group, t_ilm_float o
&& gIpcModule.appendDouble(opacity)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1396,7 +1465,8 @@ ilmErrorTypes ilm_displaySetRenderOrder(t_ilm_display display, t_ilm_layer *pLay
&& gIpcModule.appendUint(display)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1414,7 +1484,8 @@ ilmErrorTypes ilm_getScreenIDs(t_ilm_uint* pNumberOfIDs, t_ilm_uint** ppIDs)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUintArray(ppIDs, pNumberOfIDs))
+ && gIpcModule.getUintArray(ppIDs, pNumberOfIDs)
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1432,7 +1503,8 @@ ilmErrorTypes ilm_takeScreenshot(t_ilm_uint screen, t_ilm_const_string filename)
&& gIpcModule.appendString(filename)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1450,7 +1522,8 @@ ilmErrorTypes ilm_takeLayerScreenshot(t_ilm_const_string filename, t_ilm_layer l
&& gIpcModule.appendUint(layerid)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1468,7 +1541,8 @@ ilmErrorTypes ilm_takeSurfaceScreenshot(t_ilm_const_string filename, t_ilm_surfa
&& gIpcModule.appendUint(surfaceid)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1486,7 +1560,8 @@ ilmErrorTypes ilm_SetKeyboardFocusOn(t_ilm_surface surfaceId)
&& gIpcModule.appendUint(surfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage())
{
returnValue = ILM_SUCCESS;
}
@@ -1504,7 +1579,9 @@ ilmErrorTypes ilm_GetKeyboardFocusSurfaceId(t_ilm_surface* pSurfaceId)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
&& !gIpcModule.isErrorMessage()
- && gIpcModule.getUint(pSurfaceId))
+ && gIpcModule.getUint(pSurfaceId)
+ && gIpcModule.destroyMessage()
+ )
{
returnValue = ILM_SUCCESS;
}
@@ -1525,7 +1602,9 @@ ilmErrorTypes ilm_UpdateInputEventAcceptanceOn(t_ilm_surface surfaceId, ilmInput
&& gIpcModule.appendBool(acceptance)
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage()
+ )
{
returnValue = ILM_SUCCESS;
}
@@ -1543,7 +1622,9 @@ ilmErrorTypes ilm_commitChanges()
if (gIpcModule.createMessage("CommitChanges\0")
&& gIpcModule.sendMessage()
&& gIpcModule.receiveMessage(gReceiveTimeout)
- && !gIpcModule.isErrorMessage())
+ && !gIpcModule.isErrorMessage()
+ && gIpcModule.destroyMessage()
+ )
{
returnValue = ILM_SUCCESS;
}
diff --git a/LayerManagerPlugins/Communicators/GenericCommunicator/src/GenericCommunicator.cpp b/LayerManagerPlugins/Communicators/GenericCommunicator/src/GenericCommunicator.cpp
index d4c77af..9fdbd36 100644
--- a/LayerManagerPlugins/Communicators/GenericCommunicator/src/GenericCommunicator.cpp
+++ b/LayerManagerPlugins/Communicators/GenericCommunicator/src/GenericCommunicator.cpp
@@ -281,6 +281,7 @@ void GenericCommunicator::process(int timeout_ms)
LOG_DEBUG("GenericCommunicator", "Received unknown data from " << sender);
break;
}
+ m_ipcModule.destroyMessage();
}
void GenericCommunicator::setdebug(bool onoff)
diff --git a/LayerManagerPlugins/IpcModules/DbusIpcModule/include/common.h b/LayerManagerPlugins/IpcModules/DbusIpcModule/include/common.h
index f22fc2c..9fab3e5 100644
--- a/LayerManagerPlugins/IpcModules/DbusIpcModule/include/common.h
+++ b/LayerManagerPlugins/IpcModules/DbusIpcModule/include/common.h
@@ -37,6 +37,7 @@ typedef struct
t_ilm_const_string name;
t_ilm_const_string sender;
DBusMessage* pMessage;
+ DBusMessage* pMessageReply;
DBusMessageIter iter;
DBusPendingCall* pPending;
} dbusmessage;
diff --git a/LayerManagerPlugins/IpcModules/DbusIpcModule/src/message.c b/LayerManagerPlugins/IpcModules/DbusIpcModule/src/message.c
index 5e11a86..39bedb3 100644
--- a/LayerManagerPlugins/IpcModules/DbusIpcModule/src/message.c
+++ b/LayerManagerPlugins/IpcModules/DbusIpcModule/src/message.c
@@ -49,14 +49,32 @@ t_ilm_bool createMessage(t_ilm_const_string name)
}
else
{
- gpCurrentMessage->pMessage = dbus_message_new_method_return(gpCurrentMessage->pMessage);
- dbus_message_iter_init_append(gpCurrentMessage->pMessage, &gpCurrentMessage->iter);
+ gpCurrentMessage->pMessageReply = dbus_message_new_method_return(gpCurrentMessage->pMessage);
+ dbus_message_iter_init_append(gpCurrentMessage->pMessageReply, &gpCurrentMessage->iter);
returnValue = ILM_TRUE;
}
return returnValue;
}
+
+t_ilm_bool destroyMessage()
+{
+
+ t_ilm_bool returnValue = ILM_TRUE;
+
+ /* Clean up message if existing */
+
+ if (NULL!=gpCurrentMessage->pMessage)
+ {
+ dbus_message_unref(gpCurrentMessage->pMessage);
+ gpCurrentMessage->pMessage = NULL;
+ gpCurrentMessage->name = "";
+ }
+
+ return returnValue;
+}
+
t_ilm_bool sendMessage()
{
LOG_ENTER_FUNCTION;
@@ -72,19 +90,20 @@ t_ilm_bool sendMessage()
}
else
{
- t_ilm_int serial = dbus_message_get_serial(gpCurrentMessage->pMessage);
- if (!dbus_connection_send(gpDbusState->connection, gpCurrentMessage->pMessage, &serial))
+ t_ilm_int serial = dbus_message_get_serial(gpCurrentMessage->pMessageReply);
+ if (!dbus_connection_send(gpDbusState->connection, gpCurrentMessage->pMessageReply, &serial))
{
printf("DBUSIpcModule: Out Of Memory!\n");
exit(1);
}
+ dbus_message_unref(gpCurrentMessage->pMessageReply);
+ gpCurrentMessage->pMessageReply = NULL;
}
dbus_connection_flush(gpDbusState->connection);
-
dbus_message_unref(gpCurrentMessage->pMessage);
gpCurrentMessage->pMessage = NULL;
- gpCurrentMessage->name = "";
+ gpCurrentMessage->name = "";
return returnValue;
}
diff --git a/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModule.h b/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModule.h
index 990d014..4d69d7b 100644
--- a/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModule.h
+++ b/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModule.h
@@ -32,6 +32,7 @@ t_ilm_bool destroy();
//=============================================================================
t_ilm_bool createMessage(t_ilm_const_string name);
t_ilm_bool sendMessage();
+t_ilm_bool destroyMessage();
t_ilm_bool sendError(t_ilm_const_string errorDescription);
enum IpcMessageType receiveMessage(t_ilm_int timeoutInMs);
diff --git a/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModuleLoader.h b/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModuleLoader.h
index 2aa0308..40d4455 100644
--- a/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModuleLoader.h
+++ b/LayerManagerPlugins/IpcModules/IpcModuleLoader/include/IpcModuleLoader.h
@@ -32,6 +32,7 @@ struct IpcModule
t_ilm_bool (*createMessage)(t_ilm_const_string);
t_ilm_bool (*sendMessage)();
+ t_ilm_bool (*destroyMessage)();
t_ilm_bool (*sendError)(t_ilm_const_string);
enum IpcMessageType (*receiveMessage)(int); // timeout in ms
diff --git a/LayerManagerPlugins/IpcModules/IpcModuleLoader/src/IpcModuleLoader.c b/LayerManagerPlugins/IpcModules/IpcModuleLoader/src/IpcModuleLoader.c
index 32bd824..748e92f 100644
--- a/LayerManagerPlugins/IpcModules/IpcModuleLoader/src/IpcModuleLoader.c
+++ b/LayerManagerPlugins/IpcModules/IpcModuleLoader/src/IpcModuleLoader.c
@@ -62,6 +62,7 @@ t_ilm_bool loadSymbolTable(struct IpcModule* ipcModule, char* path, char* file)
{ "destroy", (void**)&ipcModule->destroy },
{ "createMessage", (void**)&ipcModule->createMessage },
{ "sendMessage", (void**)&ipcModule->sendMessage },
+ { "destroyMessage", (void**)&ipcModule->destroyMessage },
{ "sendError", (void**)&ipcModule->sendError },
{ "isErrorMessage", (void**)&ipcModule->isErrorMessage },
{ "receiveMessage", (void**)&ipcModule->receiveMessage },
diff --git a/LayerManagerPlugins/IpcModules/TcpIpcModule/src/message.c b/LayerManagerPlugins/IpcModules/TcpIpcModule/src/message.c
index d3aebb1..ffdc86d 100644
--- a/LayerManagerPlugins/IpcModules/TcpIpcModule/src/message.c
+++ b/LayerManagerPlugins/IpcModules/TcpIpcModule/src/message.c
@@ -43,6 +43,15 @@ t_ilm_bool createMessage(t_ilm_const_string name)
return appendString(name);
}
+t_ilm_bool destroyMessage()
+{
+ t_ilm_bool returnValue = ILM_TRUE;
+
+ /* to be implemented if needed */
+
+ return returnValue;
+}
+
t_ilm_bool sendMessage()
{
int activesocket = 0;