X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=WindowManager%2Fsrc%2Fwindowmanager.hpp;h=ef19f4e65d3e57b8528c1bc5b70e5eed7b9703d5;hb=d19555c038f6f1f89f08f12c88908d84b32b1bbf;hp=ee779aa89202825aa00ab33383aba1f8914880c5;hpb=0a468d9b5ae7b3e5ba106facf17698d89b1ce200;p=staging%2FHomeScreen.git diff --git a/WindowManager/src/windowmanager.hpp b/WindowManager/src/windowmanager.hpp index ee779aa..ef19f4e 100644 --- a/WindowManager/src/windowmanager.hpp +++ b/WindowManager/src/windowmanager.hpp @@ -18,7 +18,17 @@ #define WINDOWMANAGER_HPP #include +#include +#include +#include "windowmanager_adapter.h" + + +typedef struct +{ + int pid; + QString processName; +} SurfaceInfo; #ifdef __arm__ extern "C" { @@ -26,19 +36,44 @@ extern "C" { } #endif - class WindowManager : public QObject { Q_OBJECT + public: explicit WindowManager(QObject *parent = 0); ~WindowManager(); + + void start(); private: + WindowmanagerAdaptor *mp_windowManagerAdaptor; + QMap > m_layouts; + QMap m_layoutNames; + QMap m_layoutFullScreen; + QMap m_layoutFullScreenAssociated; + int m_currentLayout; + void dumpScene(); + int m_homeScreenPid; + +#ifdef __arm__ + void createNewLayer(int layerId); + void addSurfaceToLayer(int surfaceId, int layerId); + void updateScreen(); + QMap *mp_surfaces; + /* one layer per pid is created + where the surfaces are added that are created by the process */ + QList *mp_processLayers; +#endif + + QMap *mp_layoutAreaToPidAssignment; + public: + static void* myThis; #ifdef __arm__ + // for general notifications void notificationFunc_non_static(ilmObjectType object, t_ilm_uint id, t_ilm_bool created); @@ -46,9 +81,34 @@ public: t_ilm_uint id, t_ilm_bool created, void* user_data); + + + // for surface notifications + void surfaceCallbackFunction_non_static(t_ilm_surface surface, + struct ilmSurfaceProperties* surfaceProperties, + t_ilm_notification_mask mask); + static void surfaceCallbackFunction_static(t_ilm_surface surface, + struct ilmSurfaceProperties* surfaceProperties, + t_ilm_notification_mask mask); + #endif public slots: + +// from windowmanager_adapter.h +public Q_SLOTS: // METHODS + int addLayout(int layoutId, const QString &layoutName, bool isFullScreen, int associatedFullScreenLayout, const QList &surfaceAreas); + int getAssociatedFullScreenLayout(int layoutId); + QList getAvailableLayouts(int numberOfAppSurfaces); + QList getAvailableSurfaces(); + int getLayout(); + QString getLayoutName(int layoutId); + bool isLayoutFullScreen(int layoutId); + void setLayoutById(int layoutId); + void setLayoutByName(const QString &layoutName); + void setPidToLayoutArea(int pid, int layoutAreaId); + }; + #endif // WINDOWMANAGER_HPP