summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/mirclient/qmirclientintegration.h
diff options
context:
space:
mode:
authorGerry Boland <gerry.boland@canonical.com>2016-11-02 16:46:53 +0000
committerMatti Paaso <matti.paaso@qt.io>2017-01-24 05:52:52 +0000
commitc28fde3fdac19fd5a5f614bb7983080031c924b3 (patch)
tree441d2d4ea4e1e17db49ed3b12c7c724cbc6db894 /src/plugins/platforms/mirclient/qmirclientintegration.h
parent4b507e8257243e36f40089d57099c2d668c5884d (diff)
Mirclient: update based on upstream development in lp:qtubuntu
This is based on revision 360 of lp:qtubuntu. Main features/bugs fixed: - fix QQuickWidget-based app rendering - wire up Qt window types to Mir to enable desktop-based applications to function with a window manager - use QEGLPlatformContext and QEGLPBuffer instead of custom code - correctly populate and update list of QScreens - support for switching keyboard layouts - improve window resizing to fix visual glitching Change-Id: If816a858eb10b6356275d4b80c89a72562b3c29f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Matti Paaso <matti.paaso@qt.io>
Diffstat (limited to 'src/plugins/platforms/mirclient/qmirclientintegration.h')
-rw-r--r--src/plugins/platforms/mirclient/qmirclientintegration.h47
1 files changed, 38 insertions, 9 deletions
diff --git a/src/plugins/platforms/mirclient/qmirclientintegration.h b/src/plugins/platforms/mirclient/qmirclientintegration.h
index 97317a310a..035117f4da 100644
--- a/src/plugins/platforms/mirclient/qmirclientintegration.h
+++ b/src/plugins/platforms/mirclient/qmirclientintegration.h
@@ -44,20 +44,28 @@
#include <qpa/qplatformintegration.h>
#include <QSharedPointer>
+#include "qmirclientappstatecontroller.h"
#include "qmirclientplatformservices.h"
+#include "qmirclientscreenobserver.h"
// platform-api
#include <ubuntu/application/description.h>
#include <ubuntu/application/instance.h>
-class QMirClientClipboard;
+#include <EGL/egl.h>
+
+class QMirClientDebugExtension;
class QMirClientInput;
class QMirClientNativeInterface;
class QMirClientScreen;
+class MirConnection;
+
+class QMirClientClientIntegration : public QObject, public QPlatformIntegration
+{
+ Q_OBJECT
-class QMirClientClientIntegration : public QPlatformIntegration {
public:
- QMirClientClientIntegration();
+ QMirClientClientIntegration(int argc, char **argv);
virtual ~QMirClientClientIntegration();
// QPlatformIntegration methods.
@@ -74,14 +82,26 @@ public:
QPlatformWindow* createPlatformWindow(QWindow* window) const override;
QPlatformInputContext* inputContext() const override { return mInputContext; }
QPlatformClipboard* clipboard() const override;
+ void initialize() override;
+ QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const override;
+ QPlatformAccessibility *accessibility() const override;
+
+ // New methods.
+ MirConnection *mirConnection() const { return mMirConnection; }
+ EGLDisplay eglDisplay() const { return mEglDisplay; }
+ EGLNativeDisplayType eglNativeDisplay() const { return mEglNativeDisplay; }
+ QMirClientAppStateController *appStateController() const { return mAppStateController.data(); }
+ QMirClientScreenObserver *screenObserver() const { return mScreenObserver.data(); }
+ QMirClientDebugExtension *debugExtension() const { return mDebugExtension.data(); }
- QPlatformOpenGLContext* createPlatformOpenGLContext(QOpenGLContext* context);
- QPlatformWindow* createPlatformWindow(QWindow* window);
- QMirClientScreen* screen() const;
+private Q_SLOTS:
+ void destroyScreen(QMirClientScreen *screen);
private:
- void setupOptions();
- void setupDescription();
+ void setupOptions(QStringList &args);
+ void setupDescription(QByteArray &sessionName);
+ static QByteArray generateSessionName(QStringList &args);
+ static QByteArray generateSessionNameFromQmlFile(QStringList &args);
QMirClientNativeInterface* mNativeInterface;
QPlatformFontDatabase* mFontDb;
@@ -90,13 +110,22 @@ private:
QMirClientInput* mInput;
QPlatformInputContext* mInputContext;
- QSharedPointer<QMirClientClipboard> mClipboard;
+ mutable QScopedPointer<QPlatformAccessibility> mAccessibility;
+ QScopedPointer<QMirClientDebugExtension> mDebugExtension;
+ QScopedPointer<QMirClientScreenObserver> mScreenObserver;
+ QScopedPointer<QMirClientAppStateController> mAppStateController;
qreal mScaleFactor;
+ MirConnection *mMirConnection;
+
// Platform API stuff
UApplicationOptions* mOptions;
UApplicationDescription* mDesc;
UApplicationInstance* mInstance;
+
+ // EGL related
+ EGLDisplay mEglDisplay{EGL_NO_DISPLAY};
+ EGLNativeDisplayType mEglNativeDisplay;
};
#endif // QMIRCLIENTINTEGRATION_H