From b7b2bdef1525f6b0fbf13f46224d732f41e0575c Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Wed, 16 Oct 2013 17:25:23 +0200 Subject: linux-rasp-pi: Remove custom cursor code This code was added as an optimization for showing a mouse cursor on the Raspberry Pi. What happens though is while the mouse cursor does move more smoothly, the actual application becomes less smooth when the mouse cursor is moved. By removing the custom cursor code, performance will no longer be effected by rendering a moving mouse cursor. Change-Id: I9f8ac6c236cd4ff6d8e1d999a461c3e6db75d7e3 Reviewed-by: Samuli Piippo Reviewed-by: Laszlo Agocs --- .../devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp | 86 ---------------------- 1 file changed, 86 deletions(-) (limited to 'mkspecs/devices/linux-rasp-pi-g++') diff --git a/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp b/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp index 671f525250..5e57ba382a 100644 --- a/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp +++ b/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp @@ -136,89 +136,6 @@ static void destroyDispmanxLayer(EGLNativeWindowType window) delete eglWindow; } -class QEglFSPiCursor : public QEglFSCursor -{ -public: - QEglFSPiCursor(QEglFSScreen *screen) : QEglFSCursor(screen) { - QSurfaceFormat platformFormat; - platformFormat.setDepthBufferSize(24); - platformFormat.setStencilBufferSize(8); - platformFormat.setRedBufferSize(8); - platformFormat.setGreenBufferSize(8); - platformFormat.setBlueBufferSize(8); - platformFormat.setAlphaBufferSize(8); - m_config = q_configFromGLFormat(m_screen->display(), platformFormat); - - createSurface(); - createContext(); - drawInLayer(); - } - - ~QEglFSPiCursor() { - eglDestroySurface(m_screen->display(), m_surface); - destroyDispmanxLayer(m_window); - eglDestroyContext(m_screen->display(), m_context); - } - - void createSurface() { - const QRect cr = cursorRect(); - m_window = createDispmanxLayer(cr.topLeft(), cr.size(), 50, DISPMANX_FLAGS_ALPHA_FROM_SOURCE); - m_surface = eglCreateWindowSurface(m_screen->display(), m_config, m_window, NULL); - } - - void createContext() { - eglBindAPI(EGL_OPENGL_ES_API); - QVector attrs; - attrs.append(EGL_CONTEXT_CLIENT_VERSION); - attrs.append(2); - attrs.append(EGL_NONE); - m_context = eglCreateContext(m_screen->display(), m_config, EGL_NO_CONTEXT, attrs.constData()); - } - - void drawInLayer() { - eglMakeCurrent(m_screen->display(), m_surface, m_surface, m_context); - - glClearColor(0, 0, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - draw(QRectF(QPointF(-1, 1), QPointF(1, -1))); - - eglSwapBuffers(m_screen->display(), m_surface); - eglMakeCurrent(m_screen->display(), EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - } - - void changeCursor(QCursor *cursor, QWindow *window) Q_DECL_OVERRIDE { - if (!setCurrentCursor(cursor)) - return; - - EGL_DISPMANX_WINDOW_T *eglWindow = static_cast(m_window); - if (QSize(eglWindow->width, eglWindow->height) != m_cursor.size) { - eglDestroySurface(m_screen->display(), m_surface); - destroyDispmanxLayer(m_window); - createSurface(); - } - drawInLayer(); - } - - void setPos(const QPoint &pos) Q_DECL_OVERRIDE { - m_cursor.pos = pos; - moveDispmanxLayer(m_window, cursorRect().topLeft()); - } - - void pointerEvent(const QMouseEvent &event) Q_DECL_OVERRIDE { - if (event.type() != QEvent::MouseMove) - return; - m_cursor.pos = event.pos(); - moveDispmanxLayer(m_window, cursorRect().topLeft()); - } - - void paintOnScreen() Q_DECL_OVERRIDE { } -private: - EGLConfig m_config; - EGLContext m_context; - EGLNativeWindowType m_window; - EGLSurface m_surface; -}; - class QEglFSPiHooks : public QEglFSHooks { public: @@ -230,9 +147,6 @@ public: virtual void destroyNativeWindow(EGLNativeWindowType window); virtual bool hasCapability(QPlatformIntegration::Capability cap) const; - QEglFSCursor *createCursor(QEglFSScreen *screen) const { - return new QEglFSPiCursor(screen); - } }; void QEglFSPiHooks::platformInit() -- cgit v1.2.3