[SCM] qtbase packaging branch, ubuntu, updated. ubuntu/5.5.1+dfsg-14ubuntu2-1-gc26d4ec

Timo Jyrinki timo at moszumanska.debian.org
Mon Feb 29 12:42:22 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtbase.git;a=commitdiff;h=c26d4ec

The following commit has been merged in the ubuntu branch:
commit c26d4ecc75d4e1c6da098e9ecca15ab313932670
Author: Timo Jyrinki <timo.jyrinki at canonical.com>
Date:   Mon Feb 29 12:42:13 2016 +0000

    debian/patches/Xcb-fix-crash-on-screen-power-save.patch:
    
    * debian/patches/Xcb-fix-crash-on-screen-power-save.patch:
      - Fix additional cases where crash could occur on monitor disconnections
        or power save. (LP: #1551122)
---
 debian/changelog                                   |  8 ++
 .../Xcb-fix-crash-on-screen-power-save.patch       | 97 ++++++++++++++++++++++
 debian/patches/series                              |  3 +-
 3 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 4832644..80b1442 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+qtbase-opensource-src (5.5.1+dfsg-14ubuntu3) UNRELEASED; urgency=medium
+
+  * debian/patches/Xcb-fix-crash-on-screen-power-save.patch:
+    - Fix additional cases where crash could occur on monitor disconnections 
+      or power save. (LP: #1551122)
+
+ -- Timo Jyrinki <timo-jyrinki at ubuntu.com>  Mon, 29 Feb 2016 08:03:06 +0000
+
 qtbase-opensource-src (5.5.1+dfsg-14ubuntu2) xenial; urgency=medium
 
   * debian/patches/enable-tests.patch: some qnetworkcookiejar tests have 
diff --git a/debian/patches/Xcb-fix-crash-on-screen-power-save.patch b/debian/patches/Xcb-fix-crash-on-screen-power-save.patch
new file mode 100644
index 0000000..ef26456
--- /dev/null
+++ b/debian/patches/Xcb-fix-crash-on-screen-power-save.patch
@@ -0,0 +1,97 @@
+From 7532fb4e61fc4102fd11022f57f7d8195414167b Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete at theqtcompany.com>
+Date: Fri, 23 Oct 2015 10:37:49 +0200
+Subject: [PATCH] Xcb: fix crash on screen power save
+
+Handle various cases where we have null QScreen or QPlatformScreen
+pointers. With this change, I can run Qt Creator for several days.
+Before, it would crash multiple times per day with a two-monitor
+setup.
+
+Change-Id: I0923d886ae2a4199ac37edd711ddd4f6f99df93d
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint at theqtcompany.com>
+Reviewed-by: Lars Knoll <lars.knoll at theqtcompany.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge at theqtcompany.com>
+---
+ src/plugins/platforms/xcb/qxcbbackingstore.cpp | 13 +++++++++++--
+ src/plugins/platforms/xcb/qxcbbackingstore.h   |  1 +
+ src/plugins/platforms/xcb/qxcbwindow.cpp       |  4 ++--
+ 3 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
+index 25f1ea5..1825a46 100644
+--- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp
++++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
+@@ -311,9 +311,12 @@ QPaintDevice *QXcbBackingStore::paintDevice()
+ 
+ void QXcbBackingStore::beginPaint(const QRegion &region)
+ {
++    if (!m_image && !m_size.isEmpty())
++        resize(m_size, QRegion());
++
+     if (!m_image)
+         return;
+-
++    m_size = QSize();
+     int dpr = int(m_image->image()->devicePixelRatio());
+     const int windowDpr = int(window()->devicePixelRatio());
+     if (windowDpr != dpr) {
+@@ -420,7 +423,8 @@ void QXcbBackingStore::resize(const QSize &size, const QRegion &)
+         return;
+     Q_XCB_NOOP(connection());
+ 
+-    QXcbScreen *screen = static_cast<QXcbScreen *>(window()->screen()->handle());
++
++    QXcbScreen *screen = window()->screen() ? static_cast<QXcbScreen *>(window()->screen()->handle()) : 0;
+     QPlatformWindow *pw = window()->handle();
+     if (!pw) {
+         window()->create();
+@@ -429,6 +433,11 @@ void QXcbBackingStore::resize(const QSize &size, const QRegion &)
+     QXcbWindow* win = static_cast<QXcbWindow *>(pw);
+ 
+     delete m_image;
++    if (!screen) {
++        m_image = 0;
++        m_size = size;
++        return;
++    }
+     m_image = new QXcbShmImage(screen, xSize, win->depth(), win->imageFormat());
+     m_image->image()->setDevicePixelRatio(dpr);
+     // Slow path for bgr888 VNC: Create an additional image, paint into that and
+diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.h b/src/plugins/platforms/xcb/qxcbbackingstore.h
+index b58a32d..1bea36d 100644
+--- a/src/plugins/platforms/xcb/qxcbbackingstore.h
++++ b/src/plugins/platforms/xcb/qxcbbackingstore.h
+@@ -71,6 +71,7 @@ private:
+     QXcbShmImage *m_image;
+     QRegion m_paintRegion;
+     QImage m_rgbImage;
++    QSize m_size;
+ };
+ 
+ QT_END_NAMESPACE
+diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
+index bde8826..b691c75 100644
+--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
+@@ -652,7 +652,7 @@ void QXcbWindow::setGeometry(const QRect &rect)
+     const QRect xRect = mapToNative(rect, newScreen);
+     const QRect wmGeometry = windowToWmGeometry(xRect);
+ 
+-    if (newScreen != currentScreen)
++    if (newScreen && newScreen != currentScreen)
+         QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen());
+ 
+     if (qt_window_private(window())->positionAutomatic) {
+@@ -1606,7 +1606,7 @@ void QXcbWindow::requestActivateWindow()
+         return;
+     }
+ 
+-    if (!m_mapped) {
++    if (!m_mapped || !xcbScreen()) {
+         m_deferredActivation = true;
+         return;
+     }
+-- 
+2.7.0
+
diff --git a/debian/patches/series b/debian/patches/series
index 4d22b75..eb6caf4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,8 +11,6 @@ Fix-falsely-reported-style-for-fallback-font.patch
 Remove-historical-4-padding-in-QFontEngine-alphaMapF.patch
 xcb-fix-yet-another-crash-when-screens-are-disconnec.patch
 Use-Node-name-if-Node-logicalModuleName-is-empty-for.patch
-
-# Will be no longer needed with Qt 5.7
 mips_no_atomic.diff
 detect_64bit_atomic.diff
 qnetworkreply_abort_socket.diff
@@ -26,6 +24,7 @@ xcb_fix_drag_and_drop_when_window_is_hidden.patch
 fix_not_delivering_focus.patch
 fix_potential_division_by_zero.patch
 Notify-when-the-primary-screen-changes.patch
+Xcb-fix-crash-on-screen-power-save.patch
 xcb-Handle-screen-siblings-in-QXcbVirtualDesktop.patch
 xcb-Use-a-placeholder-QScreen-when-there-are-no-outp.patch
 dbusmenu_fixes.diff

-- 
qtbase packaging



More information about the pkg-kde-commits mailing list