X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=WindowManager%2Fsrc%2Fwindowmanager.cpp;h=cee7ad75403233aa27e43ed33615c23009699c16;hb=5e03176f3e78ed01a4db9d6c9684581d9916ca1d;hp=84f467d814974e78f0e6be6f73ec07b49e0877b5;hpb=a8414c772521b330d950dedc7f5b25f8ebff6e23;p=staging%2FHomeScreen.git diff --git a/WindowManager/src/windowmanager.cpp b/WindowManager/src/windowmanager.cpp index 84f467d..cee7ad7 100644 --- a/WindowManager/src/windowmanager.cpp +++ b/WindowManager/src/windowmanager.cpp @@ -38,20 +38,32 @@ // 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 */ @@ -59,6 +71,7 @@ WindowManager::WindowManager(QObject *parent) : m_showLayers[2] = 0; /* APPLICATIONS is not shown by default */ m_showLayers[3] = WINDOWMANAGER_LAYER_HOMESCREEN; /* HOMESCREEN is shwon by default */ +#endif qDebug("-=[WindowManager]=-"); } @@ -107,6 +120,7 @@ WindowManager::~WindowManager() delete mp_layoutAreaToSurfaceIdAssignment; } +#ifdef HAVE_IVI_LAYERMANAGEMENT_API int WindowManager::getLayerRenderOrder(t_ilm_layer id_array[]) { int i, j; @@ -119,6 +133,7 @@ int WindowManager::getLayerRenderOrder(t_ilm_layer id_array[]) return j; } +#endif void WindowManager::dumpScene() { @@ -152,14 +167,16 @@ void WindowManager::createNewLayer(int layerId) 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, @@ -222,7 +239,9 @@ void WindowManager::addSurfaceToLayer(int surfaceId, int layerId) 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); @@ -347,6 +366,7 @@ void WindowManager::updateScreen() 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 { @@ -356,6 +376,7 @@ void WindowManager::updateScreen() ilm_displaySetRenderOrder(m_screenId, renderOrder, num_layers); ilm_commitChanges(); } +#endif } #ifdef HAVE_IVI_LAYERMANAGEMENT_API @@ -782,11 +803,11 @@ void WindowManager::showAppLayer(int pid) /* 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::const_iterator i = m_appLayers.find(pid);