From df6331b60aa03e65f146e93d0229cdc6dc956bbd Mon Sep 17 00:00:00 2001 From: ivan tkachenko Date: Fri, 22 Jul 2022 18:43:45 +0300 Subject: [PATCH] effects/colorpicker: Fix picking colors Due to the wrong buffer format, the function failed with GL_INVALID_OPERATION error, which was silently ignored by the effect. It resulted in the constant phantom color being returned over and over again. Co-Authored-By: David Edmundson BUG: 454974 FIXED-IN: 5.24.7, 5.25.4, 5.26 --- src/effects/colorpicker/colorpicker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/effects/colorpicker/colorpicker.cpp b/src/effects/colorpicker/colorpicker.cpp index 6d9504e9de..21a10bc732 100644 --- a/src/effects/colorpicker/colorpicker.cpp +++ b/src/effects/colorpicker/colorpicker.cpp @@ -55,12 +55,12 @@ void ColorPickerEffect::paintScreen(int mask, const QRegion ®ion, ScreenPaint effects->paintScreen(mask, region, data); if (m_scheduledPosition != QPoint(-1, -1) && effects->renderTargetRect().contains(m_scheduledPosition)) { - uint8_t data[3]; + uint8_t data[4]; const QRect geo = effects->renderTargetRect(); const QPoint screenPosition(m_scheduledPosition.x() - geo.x(), m_scheduledPosition.y() - geo.y()); const QPoint texturePosition(screenPosition.x() * effects->renderTargetScale(), (geo.height() - screenPosition.y()) * effects->renderTargetScale()); - glReadnPixels(texturePosition.x(), texturePosition.y(), 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 3, data); + glReadnPixels(texturePosition.x(), texturePosition.y(), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 4, data); QDBusConnection::sessionBus().send(m_replyMessage.createReply(QColor(data[0], data[1], data[2]))); m_picking = false; m_scheduledPosition = QPoint(-1, -1);