From 6f8a19846ba51966f524a7b9eb2c4a2b118f4b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 5 Nov 2015 13:34:36 +0100 Subject: Input: Convert QScreen geometry to native pixels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Low-level input handling uses the native coordinate system and the (device independent) coordinates from QScreen needs to be converted. Change-Id: I501dc77f5e51be01a42e533cd0609e069b8d228b Reviewed-by: J-P Nurmi Reviewed-by: Morten Johan Sørvig --- src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp | 4 +++- src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp | 4 +++- src/platformsupport/input/libinput/qlibinputpointer.cpp | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp index c4ebc5c51d..76d8aab8f2 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp +++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp @@ -43,6 +43,7 @@ #include #include // overrides QT_OPEN +#include #include @@ -141,7 +142,8 @@ bool QEvdevMouseHandler::getHardwareMaximum() m_hardwareHeight = absInfo.maximum - absInfo.minimum; - QRect g = QGuiApplication::primaryScreen()->virtualGeometry(); + QScreen *primaryScreen = QGuiApplication::primaryScreen(); + QRect g = QHighDpi::toNativePixels(primaryScreen->virtualGeometry(), primaryScreen); m_hardwareScalerX = static_cast(m_hardwareWidth) / (g.right() - g.left()); m_hardwareScalerY = static_cast(m_hardwareHeight) / (g.bottom() - g.top()); diff --git a/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp b/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp index 805397f021..68db0b26ba 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp +++ b/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp @@ -41,6 +41,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -106,7 +107,8 @@ QEvdevMouseManager::~QEvdevMouseManager() void QEvdevMouseManager::clampPosition() { // clamp to screen geometry - QRect g = QGuiApplication::primaryScreen()->virtualGeometry(); + QScreen *primaryScreen = QGuiApplication::primaryScreen(); + QRect g = QHighDpi::toNativePixels(primaryScreen->virtualGeometry(), primaryScreen); if (m_x + m_xoffset < g.left()) m_x = g.left() - m_xoffset; else if (m_x + m_xoffset > g.right()) diff --git a/src/platformsupport/input/libinput/qlibinputpointer.cpp b/src/platformsupport/input/libinput/qlibinputpointer.cpp index 48e5a6cf1c..55339a841a 100644 --- a/src/platformsupport/input/libinput/qlibinputpointer.cpp +++ b/src/platformsupport/input/libinput/qlibinputpointer.cpp @@ -36,6 +36,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -81,7 +82,8 @@ void QLibInputPointer::processMotion(libinput_event_pointer *e) { const double dx = libinput_event_pointer_get_dx(e); const double dy = libinput_event_pointer_get_dy(e); - const QRect g = QGuiApplication::primaryScreen()->virtualGeometry(); + QScreen * const primaryScreen = QGuiApplication::primaryScreen(); + const QRect g = QHighDpi::toNativePixels(primaryScreen->virtualGeometry(), primaryScreen); m_pos.setX(qBound(g.left(), qRound(m_pos.x() + dx), g.right())); m_pos.setY(qBound(g.top(), qRound(m_pos.y() + dy), g.bottom())); @@ -110,7 +112,9 @@ void QLibInputPointer::processAxis(libinput_event_pointer *e) void QLibInputPointer::setPos(const QPoint &pos) { - const QRect g = QGuiApplication::primaryScreen()->virtualGeometry(); + QScreen * const primaryScreen = QGuiApplication::primaryScreen(); + const QRect g = QHighDpi::toNativePixels(primaryScreen->virtualGeometry(), primaryScreen); + m_pos.setX(qBound(g.left(), pos.x(), g.right())); m_pos.setY(qBound(g.top(), pos.y(), g.bottom())); } -- cgit v1.2.3 From 3f937393d5f5d88d8e6996b2ec58a12738bd7487 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Wed, 18 Nov 2015 16:52:12 +0100 Subject: Add Xlib for eglconvenience This used to work by accident but now with the recent build system changes the problem became apparent. Not listing the X11 libs is wrong anyway. Change-Id: I6f75dafa81510d6d6a7571a9fe156cc7b968c8dc Reviewed-by: Andy Nichols --- src/platformsupport/eglconvenience/eglconvenience.pri | 1 + 1 file changed, 1 insertion(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/eglconvenience/eglconvenience.pri b/src/platformsupport/eglconvenience/eglconvenience.pri index 1cab1e556f..f1e0d58a6d 100644 --- a/src/platformsupport/eglconvenience/eglconvenience.pri +++ b/src/platformsupport/eglconvenience/eglconvenience.pri @@ -23,6 +23,7 @@ contains(QT_CONFIG,egl) { $$PWD/qxlibeglintegration_p.h SOURCES += \ $$PWD/qxlibeglintegration.cpp + LIBS_PRIVATE += $$QMAKE_LIBS_X11 } CONFIG += egl } -- cgit v1.2.3 From e1fb3b0b3e38cbe23ed73722952ab90e0a128cfe Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 9 Nov 2015 15:57:09 +0100 Subject: Add EGL stream state defines used by Qt Wayland Change-Id: I7318de90477aa92abd782cf2038e882152b515bf Reviewed-by: Paul Olav Tvete --- src/platformsupport/eglconvenience/qeglstreamconvenience_p.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/eglconvenience/qeglstreamconvenience_p.h b/src/platformsupport/eglconvenience/qeglstreamconvenience_p.h index 12787d03ae..648b129579 100644 --- a/src/platformsupport/eglconvenience/qeglstreamconvenience_p.h +++ b/src/platformsupport/eglconvenience/qeglstreamconvenience_p.h @@ -84,6 +84,15 @@ typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDispla typedef void *EGLStreamKHR; typedef quint64 EGLuint64KHR; #define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) +#define EGL_STREAM_STATE_KHR 0x3214 +#define EGL_STREAM_STATE_CREATED_KHR 0x3215 +#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 +#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 +#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 +#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 +#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A +#define EGL_BAD_STREAM_KHR 0x321B +#define EGL_BAD_STATE_KHR 0x321C typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list); typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); -- cgit v1.2.3