diff --git a/plugins/hmi-controller/layercontroller.cpp b/plugins/hmi-controller/layercontroller.cpp index c435bad..1bf4a4a 100644 --- a/plugins/hmi-controller/layercontroller.cpp +++ b/plugins/hmi-controller/layercontroller.cpp @@ -359,7 +359,7 @@ void LayerController::setLayerVisible(unsigned int layerId) ilm_commitChanges(); } -bool LayerController::createLayer(unsigned int layerId) +bool LayerController::createLayer(unsigned int &layerId) { ilmErrorTypes callResult = ILM_FAILED; callResult = ilm_layerCreateWithDimension(&layerId, m_screenWidth, m_screenHeight); @@ -615,7 +615,21 @@ void LayerController::addAppProcess(const AppManager::AppInfo app, const pid_t p pinfo.surfaceList = {}; // Create layer for new app - createLayer(pid); + + // We need a new variable because gcc is picky with having a true lvalue + // for the non-const pass by reference, and not pid which is an rvalue. + // (createLayer will modify the input variable to the layer ID that was + // actually chosen. In this case it should be always what we asked + // for, but it can be dynamic in other cases) + unsigned int layerId = pid; + bool result = createLayer(layerId /*by reference*/); + + printf("pid is %d and layerId was set to %d\n",pid, layerId); + printf("createLayer returned result %d\n", (int)result); + + // FIXME: This could use an assert(layerId == pid) and also error + // checking (createLayer should return true). + // but this is a quick fix - changing as little as possible. m_processMap[pid]= pinfo; } diff --git a/plugins/hmi-controller/layercontroller.h b/plugins/hmi-controller/layercontroller.h index 4bc8b17..a045a2d 100644 --- a/plugins/hmi-controller/layercontroller.h +++ b/plugins/hmi-controller/layercontroller.h @@ -60,7 +60,7 @@ class LayerController : public QObject void setSurfaceVisible(unsigned int surfaceId); void setLayerVisible(unsigned int layerId); - bool createLayer(unsigned int layerId); + bool createLayer(unsigned int &layerId); bool destroyLayer(unsigned int layerId); void focusOnLayer(unsigned int layerId);