// the HomeScreen app has to have the surface id 1000
#define WINDOWMANAGER_HOMESCREEN_MAIN_SURFACE_ID 1000
+// Quick hack for scaling layer to fit non-FHD(1920x1080) screen
+// * source rect of layer should be 1920x1080
+// * destination rect of layer should fit physical display resolution
+// * source rect of surface shoud be based on 1920x1080
+// * destination rect of surface should be based on 1920x1080
+#define WINDOWMANAGER_HOMESCREEN_WIDTH 1080
+#define WINDOWMANAGER_HOMESCREEN_HEIGHT 1920
+
void* WindowManager::myThis = 0;
-WindowManager::WindowManager(QObject *parent) :
+WindowManager::WindowManager(int displayId, QObject *parent) :
QObject(parent),
m_layouts(),
// m_appSurfaces(),
mp_layoutAreaToSurfaceIdAssignment(0),
m_currentLayout(-1),
- m_screenId(0), // use screen "0"
+ m_screenId(displayId),
m_screenWidth(0),
- m_screenHeight(0),
+ m_screenHeight(0)
+#ifdef HAVE_IVI_LAYERMANAGEMENT_API
+ ,
m_appLayers(),
m_pending_to_show(-1)
+#endif
{
+#ifdef HAVE_IVI_LAYERMANAGEMENT_API
m_showLayers = new t_ilm_layer[WINDOWMANAGER_LAYER_NUM];
m_showLayers[0] = 0; /* POPUP is not shown by default */
m_showLayers[2] = 0; /* APPLICATIONS is not shown by default */
m_showLayers[3] = WINDOWMANAGER_LAYER_HOMESCREEN; /* HOMESCREEN is shwon by default */
+#endif
qDebug("-=[WindowManager]=-");
}
delete mp_layoutAreaToSurfaceIdAssignment;
}
+#ifdef HAVE_IVI_LAYERMANAGEMENT_API
int WindowManager::getLayerRenderOrder(t_ilm_layer id_array[])
{
int i, j;
return j;
}
+#endif
void WindowManager::dumpScene()
{
qDebug(" layerId %d", layerId);
t_ilm_layer newLayerId = layerId;
- ilm_layerCreateWithDimension(&newLayerId, m_screenWidth, m_screenHeight);
+ ilm_layerCreateWithDimension(&newLayerId,
+ WINDOWMANAGER_HOMESCREEN_WIDTH,
+ WINDOWMANAGER_HOMESCREEN_HEIGHT);
ilm_layerSetOpacity(newLayerId, 1.0);
ilm_layerSetVisibility(newLayerId, ILM_TRUE);
ilm_layerSetSourceRectangle(newLayerId,
0,
0,
- m_screenWidth,
- m_screenHeight);
+ WINDOWMANAGER_HOMESCREEN_WIDTH,
+ WINDOWMANAGER_HOMESCREEN_HEIGHT);
ilm_layerSetDestinationRectangle(newLayerId,
0,
0,
ilm_getPropertiesOfSurface(surfaceId, &surfaceProperties);
// homescreen app always fullscreen in the back
- ilm_surfaceSetDestinationRectangle(surfaceId, 0, 0, m_screenWidth, m_screenHeight);
+ ilm_surfaceSetDestinationRectangle(surfaceId, 0, 0,
+ WINDOWMANAGER_HOMESCREEN_WIDTH,
+ WINDOWMANAGER_HOMESCREEN_HEIGHT);
//ilm_surfaceSetSourceRectangle(surfaceId, 0, 0, m_screenWidth, m_screenHeight);
ilm_surfaceSetOpacity(surfaceId, 1.0);
ilm_surfaceSetVisibility(surfaceId, ILM_TRUE);
ilm_layerSetRenderOrder(WINDOWMANAGER_LAYER_POPUP, pArray, length);
ilm_commitChanges();
#endif
+#ifdef HAVE_IVI_LAYERMANAGEMENT_API
if (m_pending_to_show != -1) {
showAppLayer(m_pending_to_show);
} else {
// display layer render order
t_ilm_layer renderOrder[WINDOWMANAGER_LAYER_NUM];
int num_layers = getLayerRenderOrder(renderOrder);
- ilm_displaySetRenderOrder(0, renderOrder, num_layers);
- ilm_displaySetRenderOrder(1, renderOrder, num_layers);
+ ilm_displaySetRenderOrder(m_screenId, renderOrder, num_layers);
ilm_commitChanges();
}
+#endif
}
#ifdef HAVE_IVI_LAYERMANAGEMENT_API
{
qDebug("ILM_NOTIFICATION_CONTENT_AVAILABLE");
/* add surface to layer for the application */
+
ilmErrorTypes result;
pid_t pid = surfaceProperties->creatorPid;
t_ilm_layer renderOrder[WINDOWMANAGER_LAYER_NUM];
int num_layers = getLayerRenderOrder(renderOrder);
- ilm_displaySetRenderOrder(0, renderOrder, num_layers);
- ilm_displaySetRenderOrder(1, renderOrder, num_layers);
+ ilm_displaySetRenderOrder(m_screenId, renderOrder, num_layers);
ilm_commitChanges();
}
#endif
t_ilm_layer renderOrder[WINDOWMANAGER_LAYER_NUM];
int num_layers = getLayerRenderOrder(renderOrder);
- ilm_displaySetRenderOrder(0, renderOrder, num_layers);
- ilm_displaySetRenderOrder(1, renderOrder, num_layers);
+ ilm_displaySetRenderOrder(m_screenId, renderOrder, num_layers);
ilm_commitChanges();
}
#endif
/* nothing to show */
return;
}
+#ifdef HAVE_IVI_LAYERMANAGEMENT_API
/* clear pending flag */
m_pending_to_show = -1;
-#ifdef HAVE_IVI_LAYERMANAGEMENT_API
/* search layer id for application to show */
QMap<pid_t, t_ilm_layer>::const_iterator i = m_appLayers.find(pid);
t_ilm_layer renderOrder[WINDOWMANAGER_LAYER_NUM];
int num_layers = getLayerRenderOrder(renderOrder);
- ilm_displaySetRenderOrder(0, renderOrder, num_layers);
- ilm_displaySetRenderOrder(1, renderOrder, num_layers);
+ ilm_displaySetRenderOrder(m_screenId, renderOrder, num_layers);
ilm_commitChanges();
#endif
}