aboutsummaryrefslogtreecommitdiffstats
path: root/WindowManager
diff options
context:
space:
mode:
authorBocklage, Jens <Jens_Bocklage@mentor.com>2016-11-11 16:00:10 +0100
committerBocklage, Jens <Jens_Bocklage@mentor.com>2016-11-11 16:00:10 +0100
commit2044d95f928fa42beaa00f9cb30816b1f6f63552 (patch)
tree97e54ef96ad4a8eae023d426da34c1b1c412e30f /WindowManager
parent337319e30026b0bae453dc7363f27469fa2ab526 (diff)
Add new layer WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY.
Add new signal surfaceVisibilityChanged to homescreen and windowmanager API. Signed-off-by: Bocklage, Jens <Jens_Bocklage@mentor.com>
Diffstat (limited to 'WindowManager')
-rw-r--r--WindowManager/src/windowmanager.cpp30
-rw-r--r--WindowManager/src/windowmanager.hpp3
2 files changed, 30 insertions, 3 deletions
diff --git a/WindowManager/src/windowmanager.cpp b/WindowManager/src/windowmanager.cpp
index 1c0ddea..3c5c881 100644
--- a/WindowManager/src/windowmanager.cpp
+++ b/WindowManager/src/windowmanager.cpp
@@ -70,6 +70,7 @@ void WindowManager::start()
err = ilm_registerNotification(WindowManager::notificationFunc_static, this);
createNewLayer(WINDOWMANAGER_LAYER_POPUP);
+ createNewLayer(WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY);
createNewLayer(WINDOWMANAGER_LAYER_APPLICATIONS);
createNewLayer(WINDOWMANAGER_LAYER_HOMESCREEN);
#endif
@@ -184,6 +185,19 @@ void WindowManager::addSurfaceToLayer(int surfaceId, int layerId)
ilm_layerAddSurface(layerId, surfaceId);
}
+ if (layerId == WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY)
+ {
+ struct ilmSurfaceProperties surfaceProperties;
+ ilm_getPropertiesOfSurface(surfaceId, &surfaceProperties);
+
+ ilm_surfaceSetDestinationRectangle(surfaceId, 0, 0, surfaceProperties.origSourceWidth, surfaceProperties.origSourceHeight);
+ ilm_surfaceSetSourceRectangle(surfaceId, 0, 0, surfaceProperties.origSourceWidth, surfaceProperties.origSourceHeight);
+ ilm_surfaceSetOpacity(surfaceId, 0.5);
+ ilm_surfaceSetVisibility(surfaceId, ILM_TRUE);
+
+ ilm_layerAddSurface(layerId, surfaceId);
+ }
+
if (layerId == WINDOWMANAGER_LAYER_POPUP)
{
struct ilmSurfaceProperties surfaceProperties;
@@ -259,7 +273,8 @@ void WindowManager::updateScreen()
t_ilm_layer renderOrder[WINDOWMANAGER_LAYER_NUM];
renderOrder[0] = WINDOWMANAGER_LAYER_HOMESCREEN;
renderOrder[1] = WINDOWMANAGER_LAYER_APPLICATIONS;
- renderOrder[2] = WINDOWMANAGER_LAYER_POPUP;
+ renderOrder[2] = WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY;
+ renderOrder[3] = WINDOWMANAGER_LAYER_POPUP;
ilm_displaySetRenderOrder(0, renderOrder, WINDOWMANAGER_LAYER_NUM);
@@ -334,6 +349,7 @@ void WindowManager::surfaceCallbackFunction_non_static(t_ilm_surface surface,
if (ILM_NOTIFICATION_VISIBILITY & mask)
{
qDebug("ILM_NOTIFICATION_VISIBILITY");
+ surfaceVisibilityChanged(surface, surfaceProperties.visibility);
}
if (ILM_NOTIFICATION_OPACITY & mask)
{
@@ -528,10 +544,14 @@ void WindowManager::hideLayer(int layer)
}
if (1 == layer)
{
- ilm_layerSetVisibility(WINDOWMANAGER_LAYER_APPLICATIONS, ILM_FALSE);
+ ilm_layerSetVisibility(WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY, ILM_FALSE);
}
if (2 == layer)
{
+ ilm_layerSetVisibility(WINDOWMANAGER_LAYER_APPLICATIONS, ILM_FALSE);
+ }
+ if (3 == layer)
+ {
ilm_layerSetVisibility(WINDOWMANAGER_LAYER_HOMESCREEN, ILM_FALSE);
}
ilm_commitChanges();
@@ -603,10 +623,14 @@ void WindowManager::showLayer(int layer)
}
if (1 == layer)
{
- ilm_layerSetVisibility(WINDOWMANAGER_LAYER_APPLICATIONS, ILM_TRUE);
+ ilm_layerSetVisibility(WINDOWMANAGER_LAYER_HOMESCREEN_OVERLAY, ILM_TRUE);
}
if (2 == layer)
{
+ ilm_layerSetVisibility(WINDOWMANAGER_LAYER_APPLICATIONS, ILM_TRUE);
+ }
+ if (3 == layer)
+ {
ilm_layerSetVisibility(WINDOWMANAGER_LAYER_HOMESCREEN, ILM_TRUE);
}
ilm_commitChanges();
diff --git a/WindowManager/src/windowmanager.hpp b/WindowManager/src/windowmanager.hpp
index 5b0a552..a4d9d4f 100644
--- a/WindowManager/src/windowmanager.hpp
+++ b/WindowManager/src/windowmanager.hpp
@@ -103,6 +103,9 @@ public Q_SLOTS: // METHODS
int setLayoutByName(const QString &layoutName);
int setSurfaceToLayoutArea(int surfaceId, int layoutAreaId);
void showLayer(int layer);
+
+Q_SIGNALS: // SIGNALS
+ void surfaceVisibilityChanged(int surfaceId, bool visible);
};