From df75094d64c3484e4f12aad3683c7694c67eda322ac48436efbff9fad9cdf8bc Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 29 Nov 2013 06:02:54 +0000 Subject: [PATCH] Accepting request 208614 from KDE:Qt5 Added xcb_193.patch from upstream, for resolving SiC and BiC change in xcb 1.9.2/3 (fdo#71502,fdo#71507,qtbug#34748) (Ok, the BiC change still dictates that qtbase will need to rebuild against xcb 1.9.3 =) OBS-URL: https://build.opensuse.org/request/show/208614 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=8 --- libqt5-qtbase.changes | 6 ++++ libqt5-qtbase.spec | 3 ++ xcb_193.patch | 78 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 xcb_193.patch diff --git a/libqt5-qtbase.changes b/libqt5-qtbase.changes index 3005ad7..85330de 100644 --- a/libqt5-qtbase.changes +++ b/libqt5-qtbase.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Nov 27 00:18:38 UTC 2013 - hrvoje.senjan@gmail.com + +- Added xcb_193.patch from upstream, for resolving SiC and BiC change + in xcb 1.9.2/3 (fdo#71502,fdo#71507,qtbug#34748) + ------------------------------------------------------------------- Wed Nov 6 19:08:13 UTC 2013 - hrvoje.senjan@gmail.com diff --git a/libqt5-qtbase.spec b/libqt5-qtbase.spec index 50c7ded..1c5d756 100644 --- a/libqt5-qtbase.spec +++ b/libqt5-qtbase.spec @@ -75,6 +75,8 @@ Patch4: qtbase-opensource-src-5.1.1-bigendian.patch Patch109: libqt5-libtool-nodate.diff # PATCH-FIX-UPSTREAM qmake-add-usr-include.diff -- explicitly include /usr/include path Patch131: qmake-add-usr-include.diff +# PATCH-FIX-UPSTREAM xcb_193.patch -- For the 'oh, shit' xcb release (fdo#71502,fdo#71507,qtbug#34748) +Patch132: xcb_193.patch BuildRequires: clucene-core-devel BuildRequires: gstreamer-0_10-plugins-base-devel BuildRequires: libicu-devel @@ -112,6 +114,7 @@ handling. %patch4 -p1 %patch109 -p1 %patch131 -p1 +%patch132 -p1 # be sure not to use them rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib} diff --git a/xcb_193.patch b/xcb_193.patch new file mode 100644 index 0000000..04274e2 --- /dev/null +++ b/xcb_193.patch @@ -0,0 +1,78 @@ +From: Gatis Paeglis +Date: Tue, 19 Nov 2013 14:07:25 +0000 +Subject: Workaround source compatibility issue introduced by xcb 1.9.3 +X-Git-Url: http://quickgit.kde.org/?p=qt%2Fqtbase.git&a=commitdiff&h=486889523c8fe15277e3148904509789a19d25fe +--- +Workaround source compatibility issue introduced by xcb 1.9.3 + +Previous version of the struct: + +typedef struct { +uint8_t response_type; /**< Type of the response */ +uint8_t pad0; /**< Padding */ +uint16_t sequence; /**< Sequence number */ +uint32_t length; +uint16_t event_type; +uint16_t pad1; +uint32_t pad[5]; /**< Padding */ +uint32_t full_sequence; /**< full sequence */ +} xcb_ge_event_t; + +New version of it: + +typedef struct xcb_ge_event_t { +uint8_t response_type; /**< */ +uint8_t extension; /**< */ +uint16_t sequence; /**< */ +uint32_t length; /**< */ +uint16_t event_type; /**< */ +uint8_t pad0[22]; /**< */ +uint32_t full_sequence; /**< */ +} xcb_ge_event_t; + +Changes are: +- "pad0" became "extension" +- "pad1" and "pad" became "pad0" + +More details in https://bugs.freedesktop.org/show_bug.cgi?id=71502 + +Task-number: QTBUG-34748 +Change-Id: Ibd801c11510f75fa82d5c14346b95236142487ac +Reviewed-by: Uli Schlachter +Reviewed-by: Lars Knoll +--- + + +--- a/src/plugins/platforms/xcb/qxcbconnection.cpp ++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp +@@ -1749,10 +1749,26 @@ + return true; + } + +-bool QXcbConnection::xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *event, int opCode) +-{ +- // xGenericEvent has "extension" on the second byte, xcb_ge_event_t has "pad0". +- if (event->pad0 == opCode) { ++// Starting from the xcb version 1.9.3 struct xcb_ge_event_t has changed: ++// - "pad0" became "extension" ++// - "pad1" and "pad" became "pad0" ++// New and old version of this struct share the following fields: ++// NOTE: API might change again in the next release of xcb in which case this comment will ++// need to be updated to reflect the reality. ++typedef struct qt_xcb_ge_event_t { ++ uint8_t response_type; ++ uint8_t extension; ++ uint16_t sequence; ++ uint32_t length; ++ uint16_t event_type; ++} qt_xcb_ge_event_t; ++ ++bool QXcbConnection::xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *ev, int opCode) ++{ ++ qt_xcb_ge_event_t *event = (qt_xcb_ge_event_t *)ev; ++ // xGenericEvent has "extension" on the second byte, the same is true for xcb_ge_event_t starting from ++ // the xcb version 1.9.3, prior to that it was called "pad0". ++ if (event->extension == opCode) { + // xcb event structs contain stuff that wasn't on the wire, the full_sequence field + // adds an extra 4 bytes and generic events cookie data is on the wire right after the standard 32 bytes. + // Move this data back to have the same layout in memory as it was on the wire