summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/mirclient/qmirclientscreen.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/qmirclientscreen.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/qmirclientscreen.h')
-rw-r--r--src/plugins/platforms/mirclient/qmirclientscreen.h41
1 files changed, 26 insertions, 15 deletions
diff --git a/src/plugins/platforms/mirclient/qmirclientscreen.h b/src/plugins/platforms/mirclient/qmirclientscreen.h
index b050836ada..b31cba1964 100644
--- a/src/plugins/platforms/mirclient/qmirclientscreen.h
+++ b/src/plugins/platforms/mirclient/qmirclientscreen.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2014-2015 Canonical, Ltd.
+** Copyright (C) 2014-2016 Canonical, Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
@@ -43,17 +43,19 @@
#include <qpa/qplatformscreen.h>
#include <QSurfaceFormat>
-#include <EGL/egl.h>
+
+#include <mir_toolkit/common.h> // just for MirFormFactor enum
#include "qmirclientcursor.h"
struct MirConnection;
+struct MirOutput;
class QMirClientScreen : public QObject, public QPlatformScreen
{
Q_OBJECT
public:
- QMirClientScreen(MirConnection *connection);
+ QMirClientScreen(const MirOutput *output, MirConnection *connection);
virtual ~QMirClientScreen();
// QPlatformScreen methods.
@@ -62,34 +64,43 @@ public:
QRect geometry() const override { return mGeometry; }
QRect availableGeometry() const override { return mGeometry; }
QSizeF physicalSize() const override { return mPhysicalSize; }
+ qreal devicePixelRatio() const override { return mDevicePixelRatio; }
+ QDpi logicalDpi() const override;
Qt::ScreenOrientation nativeOrientation() const override { return mNativeOrientation; }
Qt::ScreenOrientation orientation() const override { return mNativeOrientation; }
QPlatformCursor *cursor() const override { return const_cast<QMirClientCursor*>(&mCursor); }
- // New methods.
- QSurfaceFormat surfaceFormat() const { return mSurfaceFormat; }
- EGLDisplay eglDisplay() const { return mEglDisplay; }
- EGLConfig eglConfig() const { return mEglConfig; }
- EGLNativeDisplayType eglNativeDisplay() const { return mEglNativeDisplay; }
+ // Additional Screen properties from Mir
+ int mirOutputId() const { return mOutputId; }
+ MirFormFactor formFactor() const { return mFormFactor; }
+ float scale() const { return mScale; }
+
+ // Internally used methods
+ void updateMirOutput(const MirOutput *output);
+ void setAdditionalMirDisplayProperties(float scale, MirFormFactor formFactor, int dpi);
void handleWindowSurfaceResize(int width, int height);
- uint32_t mirOutputId() const { return mOutputId; }
// QObject methods.
void customEvent(QEvent* event) override;
private:
- QRect mGeometry;
+ void setMirOutput(const MirOutput *output);
+
+ QRect mGeometry, mNativeGeometry;
QSizeF mPhysicalSize;
+ qreal mDevicePixelRatio;
Qt::ScreenOrientation mNativeOrientation;
Qt::ScreenOrientation mCurrentOrientation;
QImage::Format mFormat;
int mDepth;
- uint32_t mOutputId;
- QSurfaceFormat mSurfaceFormat;
- EGLDisplay mEglDisplay;
- EGLConfig mEglConfig;
- EGLNativeDisplayType mEglNativeDisplay;
+ int mDpi;
+ qreal mRefreshRate;
+ MirFormFactor mFormFactor;
+ float mScale;
+ int mOutputId;
QMirClientCursor mCursor;
+
+ friend class QMirClientNativeInterface;
};
#endif // QMIRCLIENTSCREEN_H