[arch-commits] Commit in kwindowsystem/repos/extra-i686 (4 files)

Andrea Scarpino andrea at archlinux.org
Thu Jan 29 10:36:54 UTC 2015


    Date: Thursday, January 29, 2015 @ 11:36:53
  Author: andrea
Revision: 230248

archrelease: copy trunk to extra-i686

Added:
  kwindowsystem/repos/extra-i686/PKGBUILD
    (from rev 230247, kwindowsystem/trunk/PKGBUILD)
  kwindowsystem/repos/extra-i686/kdebug-337626.patch
    (from rev 230247, kwindowsystem/trunk/kdebug-337626.patch)
  kwindowsystem/repos/extra-i686/kdebug-340348.patch
    (from rev 230247, kwindowsystem/trunk/kdebug-340348.patch)
Deleted:
  kwindowsystem/repos/extra-i686/kdebug-340348.patch

---------------------+
 PKGBUILD            |   42 +++++++
 kdebug-337626.patch |   49 +++++++++
 kdebug-340348.patch |  272 +++++++++++++++++++++++++-------------------------
 3 files changed, 227 insertions(+), 136 deletions(-)

Copied: kwindowsystem/repos/extra-i686/PKGBUILD (from rev 230247, kwindowsystem/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2015-01-29 10:36:53 UTC (rev 230248)
@@ -0,0 +1,42 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea at archlinux.org>
+
+pkgname=kwindowsystem
+pkgver=5.6.0
+pkgrel=3
+pkgdesc='Access to the windowing system'
+arch=('i686' 'x86_64')
+url='https://projects.kde.org/projects/frameworks/kwindowsystem'
+license=('LGPL')
+depends=('qt5-x11extras' 'libxfixes')
+makedepends=('extra-cmake-modules' 'qt5-tools')
+groups=('kf5')
+source=("http://download.kde.org/stable/frameworks/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"
+        'kdebug-340348.patch' 'kdebug-337626.patch')
+md5sums=('bcfa5cd27b2735ffb26379b24b437190'
+         '464d5aefb97a2bcb3395d2a6239f670a'
+         'e8c9ffc08782f99cdb88a706c4496f29')
+
+prepare() {
+  mkdir build
+
+  cd ${pkgname}-${pkgver}
+  patch -p1 -i "${srcdir}"/kdebug-340348.patch
+  patch -p1 -i "${srcdir}"/kdebug-337626.patch
+}
+
+build() {
+  cd build
+  cmake ../${pkgname}-${pkgver} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DLIB_INSTALL_DIR=lib \
+    -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
+    -DBUILD_TESTING=OFF
+  make
+}
+
+package() {
+  cd build
+  make DESTDIR="${pkgdir}" install
+}

Copied: kwindowsystem/repos/extra-i686/kdebug-337626.patch (from rev 230247, kwindowsystem/trunk/kdebug-337626.patch)
===================================================================
--- kdebug-337626.patch	                        (rev 0)
+++ kdebug-337626.patch	2015-01-29 10:36:53 UTC (rev 230248)
@@ -0,0 +1,49 @@
+commit 9dbb47b07d4b4ec1e3e46098f955d36a318794bb
+Author: Thomas Lübking <thomas.luebking at gmail.com>
+Date:   Mon Nov 17 20:06:20 2014 +0100
+
+    ensure to keep image data alive w/ the image
+    
+    raster QPixmaps re-use the image data (implicitly shared)
+    deleting them w/ scope will thus cause invalidated
+    memory in the returned pixmap
+    
+    BUG: 337626
+    REVIEW: 121158
+
+diff --git a/src/kxutils.cpp b/src/kxutils.cpp
+index 44885e0..c75c08e 100644
+--- a/src/kxutils.cpp
++++ b/src/kxutils.cpp
+@@ -107,19 +107,14 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
+     case 30: {
+         // Qt doesn't have a matching image format. We need to convert manually
+         uint32_t *pixels = reinterpret_cast<uint32_t *>(xcb_get_image_data(xImage.data()));
+-        for (int i = 0; i < xImage.data()->length; ++i) {
++        for (uint i = 0; i < xImage.data()->length; ++i) {
+             int r = (pixels[i] >> 22) & 0xff;
+             int g = (pixels[i] >> 12) & 0xff;
+             int b = (pixels[i] >>  2) & 0xff;
+ 
+             pixels[i] = qRgba(r, g, b, 0xff);
+         }
+-        QImage image(reinterpret_cast<uchar *>(pixels), geo->width, geo->height,
+-                     xcb_get_image_data_length(xImage.data()) / geo->height, QImage::Format_ARGB32_Premultiplied);
+-        if (image.isNull()) {
+-            return T();
+-        }
+-        return T::fromImage(image);
++        // fall through, Qt format is still Format_ARGB32_Premultiplied
+     }
+     case 32:
+         format = QImage::Format_ARGB32_Premultiplied;
+@@ -136,7 +131,8 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
+         }
+     }
+     QImage image(xcb_get_image_data(xImage.data()), geo->width, geo->height,
+-                 xcb_get_image_data_length(xImage.data()) / geo->height, format);
++                 xcb_get_image_data_length(xImage.data()) / geo->height, format, free, xImage.data());
++    xImage.take();
+     if (image.isNull()) {
+         return T();
+     }

Deleted: kdebug-340348.patch
===================================================================
--- kdebug-340348.patch	2015-01-29 10:36:45 UTC (rev 230247)
+++ kdebug-340348.patch	2015-01-29 10:36:53 UTC (rev 230248)
@@ -1,136 +0,0 @@
-commit 34c49b24920274455f2784b2ae6ac9108b226856
-Author: Thomas Lübking <thomas.luebking at gmail.com>
-Date:   Mon Nov 17 20:09:03 2014 +0100
-
-    simplify format selection, make 24bit rgb32
-    
-    an image w/o alphachannel is certainly not
-    premultiplied
-    
-    the findFormat() made not much sense at all
-    it was only used if the image depth was
-    the default depth and then looked up supported
-    16, 24 and 32 bit formats
-    
-    However 32 bit images were handled before
-    unconditionally so this was only relevant for
-    16 bit images (where we supported either 5-6-5
-    or nothing) or 24bit images, where a false value
-    (ARGB_premultiplied implies 32bit) was returned.
-    
-    IOW: for the majority of images (32bit) this was
-    not used, for 24bpp displays we got a falsely
-    colored images and for 16bpp either a correctly
-    colored (for 5-6-5 layouts) or no image at all
-    (for 5-5-5 or [4-]4-4-4 layouts)
-    
-    I don't know whether 16bpp w/ 5-5-5 or 4-4-4 itw.,
-    but better show them miscolored images (and trigger
-    a bug) than none.
-    If there're funky 24bpp servers (other than 8-8-8)
-    somebody shall please report a bug to us.
-    
-    Possible TODO:
-    add a single call to test the server layout (channel
-    masks) and yell an error if there's something "strange"
-    
-    BUG: 340348
-
-diff --git a/src/kxutils.cpp b/src/kxutils.cpp
-index c75c08e..015749d 100644
---- a/src/kxutils.cpp
-+++ b/src/kxutils.cpp
-@@ -30,57 +30,6 @@
- namespace KXUtils
- {
- 
--static uint8_t defaultDepth()
--{
--    xcb_connection_t *c = QX11Info::connection();
--    int screen = QX11Info::appScreen();
--
--    xcb_screen_iterator_t it = xcb_setup_roots_iterator(xcb_get_setup(c));
--    for (; it.rem; --screen, xcb_screen_next(&it)) {
--        if (screen == 0) {
--            return it.data->root_depth;
--        }
--    }
--    return 0;
--}
--
--static QImage::Format findFormat()
--{
--    xcb_connection_t *c = QX11Info::connection();
--    int screen = QX11Info::appScreen();
--
--    xcb_screen_iterator_t screenIt = xcb_setup_roots_iterator(xcb_get_setup(c));
--    for (; screenIt.rem; --screen, xcb_screen_next(&screenIt)) {
--        if (screen != 0) {
--            continue;
--        }
--        xcb_depth_iterator_t depthIt = xcb_screen_allowed_depths_iterator(screenIt.data);
--        for (; depthIt.rem; xcb_depth_next(&depthIt)) {
--            xcb_visualtype_iterator_t visualIt = xcb_depth_visuals_iterator(depthIt.data);
--            for (; visualIt.rem; xcb_visualtype_next(&visualIt)) {
--                if (screenIt.data->root_visual != visualIt.data->visual_id) {
--                    continue;
--                }
--                xcb_visualtype_t *visual = visualIt.data;
--                if ((depthIt.data->depth == 24 || depthIt.data->depth == 32) &&
--                        visual->red_mask   == 0x00ff0000 &&
--                        visual->green_mask == 0x0000ff00 &&
--                        visual->blue_mask  == 0x000000ff) {
--                    return QImage::Format_ARGB32_Premultiplied;
--                }
--                if (depthIt.data->depth == 16 &&
--                        visual->red_mask   == 0xf800 &&
--                        visual->green_mask == 0x07e0 &&
--                        visual->blue_mask  == 0x001f) {
--                    return QImage::Format_RGB16;
--                }
--                break;
--            }
--        }
--    }
--    return QImage::Format_Invalid;
--}
--
- template <typename T> T fromNative(xcb_pixmap_t pixmap)
- {
-     xcb_connection_t *c = QX11Info::connection();
-@@ -99,11 +48,17 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
-         // request for image data failed
-         return T();
-     }
--    QImage::Format format = QImage::Format_ARGB32_Premultiplied;
-+    QImage::Format format = QImage::Format_Invalid;
-     switch (xImage->depth) {
-     case 1:
-         format = QImage::Format_MonoLSB;
-         break;
-+    case 16:
-+        format = QImage::Format_RGB16;
-+        break;
-+    case 24:
-+        format = QImage::Format_RGB32;
-+        break;
-     case 30: {
-         // Qt doesn't have a matching image format. We need to convert manually
-         uint32_t *pixels = reinterpret_cast<uint32_t *>(xcb_get_image_data(xImage.data()));
-@@ -120,15 +75,7 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
-         format = QImage::Format_ARGB32_Premultiplied;
-         break;
-     default:
--        if (xImage->depth == defaultDepth()) {
--            format = findFormat();
--            if (format == QImage::Format_Invalid) {
--                return T();
--            }
--        } else {
--            // we don't know
--            return T();
--        }
-+        return T(); // we don't know
-     }
-     QImage image(xcb_get_image_data(xImage.data()), geo->width, geo->height,
-                  xcb_get_image_data_length(xImage.data()) / geo->height, format, free, xImage.data());

Copied: kwindowsystem/repos/extra-i686/kdebug-340348.patch (from rev 230247, kwindowsystem/trunk/kdebug-340348.patch)
===================================================================
--- kdebug-340348.patch	                        (rev 0)
+++ kdebug-340348.patch	2015-01-29 10:36:53 UTC (rev 230248)
@@ -0,0 +1,136 @@
+commit 34c49b24920274455f2784b2ae6ac9108b226856
+Author: Thomas Lübking <thomas.luebking at gmail.com>
+Date:   Mon Nov 17 20:09:03 2014 +0100
+
+    simplify format selection, make 24bit rgb32
+    
+    an image w/o alphachannel is certainly not
+    premultiplied
+    
+    the findFormat() made not much sense at all
+    it was only used if the image depth was
+    the default depth and then looked up supported
+    16, 24 and 32 bit formats
+    
+    However 32 bit images were handled before
+    unconditionally so this was only relevant for
+    16 bit images (where we supported either 5-6-5
+    or nothing) or 24bit images, where a false value
+    (ARGB_premultiplied implies 32bit) was returned.
+    
+    IOW: for the majority of images (32bit) this was
+    not used, for 24bpp displays we got a falsely
+    colored images and for 16bpp either a correctly
+    colored (for 5-6-5 layouts) or no image at all
+    (for 5-5-5 or [4-]4-4-4 layouts)
+    
+    I don't know whether 16bpp w/ 5-5-5 or 4-4-4 itw.,
+    but better show them miscolored images (and trigger
+    a bug) than none.
+    If there're funky 24bpp servers (other than 8-8-8)
+    somebody shall please report a bug to us.
+    
+    Possible TODO:
+    add a single call to test the server layout (channel
+    masks) and yell an error if there's something "strange"
+    
+    BUG: 340348
+
+diff --git a/src/kxutils.cpp b/src/kxutils.cpp
+index c75c08e..015749d 100644
+--- a/src/kxutils.cpp
++++ b/src/kxutils.cpp
+@@ -30,57 +30,6 @@
+ namespace KXUtils
+ {
+ 
+-static uint8_t defaultDepth()
+-{
+-    xcb_connection_t *c = QX11Info::connection();
+-    int screen = QX11Info::appScreen();
+-
+-    xcb_screen_iterator_t it = xcb_setup_roots_iterator(xcb_get_setup(c));
+-    for (; it.rem; --screen, xcb_screen_next(&it)) {
+-        if (screen == 0) {
+-            return it.data->root_depth;
+-        }
+-    }
+-    return 0;
+-}
+-
+-static QImage::Format findFormat()
+-{
+-    xcb_connection_t *c = QX11Info::connection();
+-    int screen = QX11Info::appScreen();
+-
+-    xcb_screen_iterator_t screenIt = xcb_setup_roots_iterator(xcb_get_setup(c));
+-    for (; screenIt.rem; --screen, xcb_screen_next(&screenIt)) {
+-        if (screen != 0) {
+-            continue;
+-        }
+-        xcb_depth_iterator_t depthIt = xcb_screen_allowed_depths_iterator(screenIt.data);
+-        for (; depthIt.rem; xcb_depth_next(&depthIt)) {
+-            xcb_visualtype_iterator_t visualIt = xcb_depth_visuals_iterator(depthIt.data);
+-            for (; visualIt.rem; xcb_visualtype_next(&visualIt)) {
+-                if (screenIt.data->root_visual != visualIt.data->visual_id) {
+-                    continue;
+-                }
+-                xcb_visualtype_t *visual = visualIt.data;
+-                if ((depthIt.data->depth == 24 || depthIt.data->depth == 32) &&
+-                        visual->red_mask   == 0x00ff0000 &&
+-                        visual->green_mask == 0x0000ff00 &&
+-                        visual->blue_mask  == 0x000000ff) {
+-                    return QImage::Format_ARGB32_Premultiplied;
+-                }
+-                if (depthIt.data->depth == 16 &&
+-                        visual->red_mask   == 0xf800 &&
+-                        visual->green_mask == 0x07e0 &&
+-                        visual->blue_mask  == 0x001f) {
+-                    return QImage::Format_RGB16;
+-                }
+-                break;
+-            }
+-        }
+-    }
+-    return QImage::Format_Invalid;
+-}
+-
+ template <typename T> T fromNative(xcb_pixmap_t pixmap)
+ {
+     xcb_connection_t *c = QX11Info::connection();
+@@ -99,11 +48,17 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
+         // request for image data failed
+         return T();
+     }
+-    QImage::Format format = QImage::Format_ARGB32_Premultiplied;
++    QImage::Format format = QImage::Format_Invalid;
+     switch (xImage->depth) {
+     case 1:
+         format = QImage::Format_MonoLSB;
+         break;
++    case 16:
++        format = QImage::Format_RGB16;
++        break;
++    case 24:
++        format = QImage::Format_RGB32;
++        break;
+     case 30: {
+         // Qt doesn't have a matching image format. We need to convert manually
+         uint32_t *pixels = reinterpret_cast<uint32_t *>(xcb_get_image_data(xImage.data()));
+@@ -120,15 +75,7 @@ template <typename T> T fromNative(xcb_pixmap_t pixmap)
+         format = QImage::Format_ARGB32_Premultiplied;
+         break;
+     default:
+-        if (xImage->depth == defaultDepth()) {
+-            format = findFormat();
+-            if (format == QImage::Format_Invalid) {
+-                return T();
+-            }
+-        } else {
+-            // we don't know
+-            return T();
+-        }
++        return T(); // we don't know
+     }
+     QImage image(xcb_get_image_data(xImage.data()), geo->width, geo->height,
+                  xcb_get_image_data_length(xImage.data()) / geo->height, format, free, xImage.data());



More information about the arch-commits mailing list