summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/api
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-12-29 15:56:33 +0100
committerLars Knoll <lars.knoll@qt.io>2017-12-30 12:09:53 +0100
commitdb92f2f3aac60218756a1aa8811cf192acc0b0e6 (patch)
treef28a47aebb2f08e221fe7bffafce62a0a96cf7fd /src/plugins/platforms/eglfs/api
parentdd61a1d98ea9fbffeaf0e2adcd0ddd58105f6a75 (diff)
parent44da5b863597e761df3545dc7ff02a9b53bbb13d (diff)
Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts: .qmake.conf mkspecs/win32-g++/qmake.conf src/corelib/global/qglobal_p.h src/corelib/global/qoperatingsystemversion_p.h src/corelib/io/qfilesystemengine_win.cpp src/network/bearer/qbearerengine.cpp src/platformsupport/input/libinput/qlibinputpointer.cpp src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/widgets/kernel/qwidget_p.h src/widgets/kernel/qwidgetwindow.cpp src/widgets/styles/qfusionstyle.cpp tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp Change-Id: I80e2722f481b12fff5d967c28f89208c0e9a1dd8
Diffstat (limited to 'src/plugins/platforms/eglfs/api')
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfscontext_p.h3
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfscursor.cpp15
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfscursor_p.h22
3 files changed, 17 insertions, 23 deletions
diff --git a/src/plugins/platforms/eglfs/api/qeglfscontext_p.h b/src/plugins/platforms/eglfs/api/qeglfscontext_p.h
index 96f7f01381..af8725b6b3 100644
--- a/src/plugins/platforms/eglfs/api/qeglfscontext_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfscontext_p.h
@@ -52,6 +52,7 @@
//
#include "qeglfsglobal_p.h"
+#include "qeglfscursor_p.h"
#include <QtEglSupport/private/qeglplatformcontext_p.h>
#include <QtCore/QVariant>
@@ -68,6 +69,8 @@ public:
void runGLChecks() override;
void swapBuffers(QPlatformSurface *surface) override;
+ QEglFSCursorData cursorData;
+
private:
EGLNativeWindowType m_tempWindow;
};
diff --git a/src/plugins/platforms/eglfs/api/qeglfscursor.cpp b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
index f46206cab5..22319fcc66 100644
--- a/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
@@ -40,10 +40,10 @@
#include "qeglfscursor_p.h"
#include "qeglfsintegration_p.h"
#include "qeglfsscreen_p.h"
+#include "qeglfscontext_p.h"
#include <qpa/qwindowsysteminterface.h>
#include <QtGui/QOpenGLContext>
-#include <QtGui/QOpenGLShaderProgram>
#include <QtCore/QFile>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonArray>
@@ -115,13 +115,6 @@ void QEglFSCursorDeviceListener::onDeviceListChanged(QInputDeviceManager::Device
void QEglFSCursor::resetResources()
{
- if (QOpenGLContext *ctx = QOpenGLContext::currentContext()) {
- GraphicsContextData &gfx(m_gfx[ctx]);
- delete gfx.program;
- glDeleteTextures(1, &gfx.customCursorTexture);
- glDeleteTextures(1, &gfx.atlasTexture);
- gfx = GraphicsContextData();
- }
m_cursor.customCursorPending = !m_cursor.customCursorImage.isNull();
}
@@ -144,8 +137,8 @@ void QEglFSCursor::createShaderPrograms()
" gl_FragColor = texture2D(texture, textureCoord).bgra;\n"
"}\n";
- GraphicsContextData &gfx(m_gfx[QOpenGLContext::currentContext()]);
- gfx.program = new QOpenGLShaderProgram;
+ QEglFSCursorData &gfx = static_cast<QEglFSContext*>(QOpenGLContext::currentContext()->handle())->cursorData;
+ gfx.program.reset(new QOpenGLShaderProgram);
gfx.program->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, textureVertexProgram);
gfx.program->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, textureFragmentProgram);
gfx.program->bindAttributeLocation("vertexCoordEntry", 0);
@@ -475,7 +468,7 @@ void QEglFSCursor::draw(const QRectF &r)
{
StateSaver stateSaver;
- GraphicsContextData &gfx(m_gfx[QOpenGLContext::currentContext()]);
+ QEglFSCursorData &gfx = static_cast<QEglFSContext*>(QOpenGLContext::currentContext()->handle())->cursorData;
if (!gfx.program) {
// one time initialization
initializeOpenGLFunctions();
diff --git a/src/plugins/platforms/eglfs/api/qeglfscursor_p.h b/src/plugins/platforms/eglfs/api/qeglfscursor_p.h
index aaeb83cb99..89c2e89f58 100644
--- a/src/plugins/platforms/eglfs/api/qeglfscursor_p.h
+++ b/src/plugins/platforms/eglfs/api/qeglfscursor_p.h
@@ -56,6 +56,7 @@
#include <qpa/qplatformscreen.h>
#include <QtGui/QMatrix4x4>
#include <QtGui/QOpenGLFunctions>
+#include <QtGui/QOpenGLShaderProgram>
#include <QtGui/private/qinputdevicemanager_p.h>
QT_BEGIN_NAMESPACE
@@ -81,6 +82,15 @@ private:
#if QT_CONFIG(opengl)
+struct QEglFSCursorData {
+ QScopedPointer<QOpenGLShaderProgram> program;
+ int textureEntry = 0;
+ int matEntry = 0;
+ uint customCursorTexture = 0;
+ uint atlasTexture = 0;
+ qint64 customCursorKey = 0;
+};
+
class Q_EGLFS_EXPORT QEglFSCursor : public QPlatformCursor
, protected QOpenGLFunctions
{
@@ -143,18 +153,6 @@ private:
QEglFSCursorDeviceListener *m_deviceListener;
bool m_updateRequested;
QMatrix4x4 m_rotationMatrix;
-
- struct GraphicsContextData {
- GraphicsContextData() : program(nullptr), textureEntry(0), matEntry(0),
- customCursorTexture(0), atlasTexture(0), customCursorKey(0) { }
- QOpenGLShaderProgram *program;
- int textureEntry;
- int matEntry;
- uint customCursorTexture;
- uint atlasTexture;
- qint64 customCursorKey;
- };
- QHash<QOpenGLContext *, GraphicsContextData> m_gfx;
};
#endif // QT_CONFIG(opengl)