summaryrefslogtreecommitdiffstats
path: root/WindowManager/src/windowmanager.hpp
diff options
context:
space:
mode:
authorBocklage, Jens <Jens_Bocklage@mentor.com>2016-09-30 14:31:09 +0200
committerBocklage, Jens <Jens_Bocklage@mentor.com>2016-09-30 14:59:21 +0200
commitcf8cd699e91df40c3f9070019f7c561432b4b4dd (patch)
treef1801eb22d1b51c80401f56eede6f79fb985333a /WindowManager/src/windowmanager.hpp
parent0a468d9b5ae7b3e5ba106facf17698d89b1ce200 (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.hpp53
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