diff options
author | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-09-30 14:31:09 +0200 |
---|---|---|
committer | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-09-30 14:59:21 +0200 |
commit | cf8cd699e91df40c3f9070019f7c561432b4b4dd (patch) | |
tree | f1801eb22d1b51c80401f56eede6f79fb985333a /WindowManager/src/windowmanager.hpp | |
parent | 0a468d9b5ae7b3e5ba106facf17698d89b1ce200 (diff) |
Implementing app launch and app surface control workflow. Using WindowManager to control layer and surfaces (ongoing).
Defining three layouts. Adding combobox selection feature to popup widget.
Known issue: IVI-shell is currently disabled in AGL due to issues (porting to Yocto 2.1.1).
Signed-off-by: Bocklage, Jens <Jens_Bocklage@mentor.com>
Diffstat (limited to 'WindowManager/src/windowmanager.hpp')
-rw-r--r-- | WindowManager/src/windowmanager.hpp | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/WindowManager/src/windowmanager.hpp b/WindowManager/src/windowmanager.hpp index ee779aa..8fb716d 100644 --- a/WindowManager/src/windowmanager.hpp +++ b/WindowManager/src/windowmanager.hpp @@ -18,7 +18,17 @@ #define WINDOWMANAGER_HPP #include <QObject> +#include <QList> +#include <QMap> +#include "windowmanager_adapter.h" + + +typedef struct +{ + int pid; + QString processName; +} SurfaceInfo; #ifdef __arm__ extern "C" { @@ -26,19 +36,37 @@ extern "C" { } #endif - class WindowManager : public QObject { Q_OBJECT + public: explicit WindowManager(QObject *parent = 0); + QMutex callbackMutex; + ~WindowManager(); private: + WindowmanagerAdaptor *mp_windowManagerAdaptor; + QMap<int, QList<SimpleRect> > m_layouts; + QMap<int, QString> m_layoutNames; + int m_currentLayout; + void dumpScene(); +#ifdef __arm__ + void createNewLayer(int layerId); + void addSurfaceToLayer(int surfaceId, int layerId); + + QMap<t_ilm_uint, SurfaceInfo> *mp_surfaces; + /* one layer per pid is created + where the surfaces are added that are created by the process */ + QList<int> *mp_processLayers; +#endif 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 +74,32 @@ 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, const QList<SimpleRect> &surfaceAreas); + QList<int> getAvailableLayouts(int numberOfAppSurfaces); + QList<SimplePoint> getAvailableSurfaces(); + int getLayout(); + QString getLayoutName(int layoutId); + void setLayoutById(int layoutId); + void setLayoutByName(const QString &layoutName); + void setSurfaceToLayoutArea(int surfaceId, int layoutAreaId); + }; + #endif // WINDOWMANAGER_HPP |