Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwebengine/files/, dev-qt/qtcore/files/, dev-qt/qtsql/files/, ...
Date: Thu, 10 May 2018 16:40:27
Message-Id: 1525970411.acd0ddbca7c809bd883e4c06ec1e0ca7ca3b8125.asturm@gentoo
1 commit: acd0ddbca7c809bd883e4c06ec1e0ca7ca3b8125
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Thu May 10 16:39:35 2018 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Thu May 10 16:40:11 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=acd0ddbc
7
8 dev-qt: Drop unused patches
9
10 dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch | 152 -------------
11 dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch | 252 ---------------------
12 dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch | 195 ----------------
13 dev-qt/qtgui/files/qtgui-5.7.1-qclipboard.patch | 39 ----
14 dev-qt/qtgui/files/qtgui-5.7.1-x32.patch | 34 ---
15 dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch | 56 -----
16 .../qtwebengine-5.7.0-fix-system-ffmpeg.patch | 13 --
17 .../files/qtwebengine-5.7.0-icu58.patch | 51 -----
18 .../files/qtwebengine-5.7.0-undef-madv_free.patch | 33 ---
19 .../qtwebengine-5.7.1-fix-audio-detection.patch | 23 --
20 .../files/qtwebengine-5.7.1-gcc-7.patch | 144 ------------
21 11 files changed, 992 deletions(-)
22
23 diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch
24 deleted file mode 100644
25 index abea1458807..00000000000
26 --- a/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch
27 +++ /dev/null
28 @@ -1,152 +0,0 @@
29 -From baad82d242a4d8c1af6c87faaa7f25584183fd53 Mon Sep 17 00:00:00 2001
30 -From: Stephen Kelly <steveire@×××××.com>
31 -Date: Tue, 20 Dec 2016 00:44:12 +0000
32 -Subject: [PATCH] QIPM: Persist model indexes after emitting layoutChange, not
33 - before
34 -
35 -Callers can persist a QModelIndex which was not persisted before in a
36 -slot connected to the signal, and such a persisted index must be updated
37 -in the course of the layoutChange.
38 -
39 -Store the indexes to persist after emitting the signal.
40 -
41 -Task-number: QTBUG-32981
42 -Change-Id: Ibee4c0d84817d72603a03fe5b22fdeefeac0695e
43 -Reviewed-by: David Faure <david.faure@××××.com>
44 ----
45 - src/corelib/itemmodels/qidentityproxymodel.cpp | 18 ++---
46 - .../tst_qidentityproxymodel.cpp | 76 ++++++++++++++++++++++
47 - 2 files changed, 85 insertions(+), 9 deletions(-)
48 -
49 -diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
50 -index e537793..7c30679 100644
51 ---- a/src/corelib/itemmodels/qidentityproxymodel.cpp
52 -+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
53 -@@ -496,15 +496,6 @@ void QIdentityProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<QPe
54 - {
55 - Q_Q(QIdentityProxyModel);
56 -
57 -- const auto proxyPersistentIndexes = q->persistentIndexList();
58 -- for (const QPersistentModelIndex &proxyPersistentIndex : proxyPersistentIndexes) {
59 -- proxyIndexes << proxyPersistentIndex;
60 -- Q_ASSERT(proxyPersistentIndex.isValid());
61 -- const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
62 -- Q_ASSERT(srcPersistentIndex.isValid());
63 -- layoutChangePersistentIndexes << srcPersistentIndex;
64 -- }
65 --
66 - QList<QPersistentModelIndex> parents;
67 - parents.reserve(sourceParents.size());
68 - for (const QPersistentModelIndex &parent : sourceParents) {
69 -@@ -518,6 +509,15 @@ void QIdentityProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<QPe
70 - }
71 -
72 - q->layoutAboutToBeChanged(parents, hint);
73 -+
74 -+ const auto proxyPersistentIndexes = q->persistentIndexList();
75 -+ for (const QPersistentModelIndex &proxyPersistentIndex : proxyPersistentIndexes) {
76 -+ proxyIndexes << proxyPersistentIndex;
77 -+ Q_ASSERT(proxyPersistentIndex.isValid());
78 -+ const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
79 -+ Q_ASSERT(srcPersistentIndex.isValid());
80 -+ layoutChangePersistentIndexes << srcPersistentIndex;
81 -+ }
82 - }
83 -
84 - void QIdentityProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersistentModelIndex> &sourceParents, QAbstractItemModel::LayoutChangeHint hint)
85 -diff --git a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
86 -index e946f31..564b854 100644
87 ---- a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
88 -+++ b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
89 -@@ -68,6 +68,8 @@ private slots:
90 -
91 - void itemData();
92 -
93 -+ void persistIndexOnLayoutChange();
94 -+
95 - protected:
96 - void verifyIdentity(QAbstractItemModel *model, const QModelIndex &parent = QModelIndex());
97 -
98 -@@ -377,5 +379,79 @@ void tst_QIdentityProxyModel::itemData()
99 - QCOMPARE(proxy.itemData(topIndex).value(Qt::DisplayRole).toString(), QStringLiteral("Monday_appended"));
100 - }
101 -
102 -+void dump(QAbstractItemModel* model, QString const& indent = " - ", QModelIndex const& parent = {})
103 -+{
104 -+ for (auto row = 0; row < model->rowCount(parent); ++row)
105 -+ {
106 -+ auto idx = model->index(row, 0, parent);
107 -+ qDebug() << (indent + idx.data().toString());
108 -+ dump(model, indent + "- ", idx);
109 -+ }
110 -+}
111 -+
112 -+void tst_QIdentityProxyModel::persistIndexOnLayoutChange()
113 -+{
114 -+ DynamicTreeModel model;
115 -+
116 -+ QList<int> ancestors;
117 -+ for (auto i = 0; i < 3; ++i)
118 -+ {
119 -+ Q_UNUSED(i);
120 -+ ModelInsertCommand insertCommand(&model);
121 -+ insertCommand.setAncestorRowNumbers(ancestors);
122 -+ insertCommand.setStartRow(0);
123 -+ insertCommand.setEndRow(0);
124 -+ insertCommand.doCommand();
125 -+ ancestors.push_back(0);
126 -+ }
127 -+ ModelInsertCommand insertCommand(&model);
128 -+ insertCommand.setAncestorRowNumbers(ancestors);
129 -+ insertCommand.setStartRow(0);
130 -+ insertCommand.setEndRow(1);
131 -+ insertCommand.doCommand();
132 -+
133 -+ // dump(&model);
134 -+ // " - 1"
135 -+ // " - - 2"
136 -+ // " - - - 3"
137 -+ // " - - - - 4"
138 -+ // " - - - - 5"
139 -+
140 -+ QIdentityProxyModel proxy;
141 -+ proxy.setSourceModel(&model);
142 -+
143 -+ QPersistentModelIndex persistentIndex;
144 -+
145 -+ QPersistentModelIndex sourcePersistentIndex = model.match(model.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
146 -+
147 -+ QCOMPARE(sourcePersistentIndex.data().toString(), QStringLiteral("5"));
148 -+
149 -+ bool gotLayoutAboutToBeChanged = false;
150 -+ bool gotLayoutChanged = false;
151 -+
152 -+ QObject::connect(&proxy, &QAbstractItemModel::layoutAboutToBeChanged, &proxy, [&proxy, &persistentIndex, &gotLayoutAboutToBeChanged]
153 -+ {
154 -+ gotLayoutAboutToBeChanged = true;
155 -+ persistentIndex = proxy.match(proxy.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
156 -+ });
157 -+
158 -+ QObject::connect(&proxy, &QAbstractItemModel::layoutChanged, &proxy, [&proxy, &persistentIndex, &sourcePersistentIndex, &gotLayoutChanged]
159 -+ {
160 -+ gotLayoutChanged = true;
161 -+ QCOMPARE(QModelIndex(persistentIndex), proxy.mapFromSource(sourcePersistentIndex));
162 -+ });
163 -+
164 -+ ModelChangeChildrenLayoutsCommand layoutChangeCommand(&model, 0);
165 -+
166 -+ layoutChangeCommand.setAncestorRowNumbers(QList<int>{0, 0, 0});
167 -+ layoutChangeCommand.setSecondAncestorRowNumbers(QList<int>{0, 0});
168 -+
169 -+ layoutChangeCommand.doCommand();
170 -+
171 -+ QVERIFY(gotLayoutAboutToBeChanged);
172 -+ QVERIFY(gotLayoutChanged);
173 -+ QVERIFY(persistentIndex.isValid());
174 -+}
175 -+
176 - QTEST_MAIN(tst_QIdentityProxyModel)
177 - #include "tst_qidentityproxymodel.moc"
178 ---
179 -2.7.4
180 -
181
182 diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch
183 deleted file mode 100644
184 index 9edbe18617a..00000000000
185 --- a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch
186 +++ /dev/null
187 @@ -1,252 +0,0 @@
188 -From 3bd0fd8f97e7a33a874929a383a42e6c710bfff3 Mon Sep 17 00:00:00 2001
189 -From: Stephen Kelly <steveire@×××××.com>
190 -Date: Sat, 17 Dec 2016 06:20:06 +0000
191 -Subject: [PATCH] QSFPM: Fix handling of source model layout change
192 -
193 -In sourceLayoutAboutToBeChanged the source model update is ignored if
194 -the affected parents are filtered out anyway. The same logic is
195 -attempted in the sourceLayoutChanged slot, but there the early-return
196 -logic is applied too late - the mapping is cleared before performing the
197 -early-return. Because pointers into the mapping are used in the
198 -internalPointer of QModelIndexes in this class, persistent indexes used
199 -later will segfault when attempting to dereference it.
200 -
201 -Additionally, if a parent becomes invalid as a result of the
202 -layoutChange, it would be filtered out by the condition in the loop,
203 -resulting in a different result in the comparison of emptiness of the
204 -parents container.
205 -
206 -Fix that by persisting the parent's container, and performing the test
207 -for early-return before clearing the mapping.
208 -
209 -Task-number: QTBUG-47711
210 -Task-number: QTBUG-32981
211 -Change-Id: If45e8a1c97d39454160f52041bc9ae7e337dce97
212 -Reviewed-by: David Faure <david.faure@××××.com>
213 ----
214 - src/corelib/itemmodels/qsortfilterproxymodel.cpp | 31 ++---
215 - .../tst_qsortfilterproxymodel.cpp | 126 +++++++++++++++++++++
216 - 2 files changed, 137 insertions(+), 20 deletions(-)
217 -
218 -diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
219 -index b0ddfa8..3331521 100644
220 ---- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
221 -+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
222 -@@ -171,6 +171,7 @@ public:
223 - QRowsRemoval itemsBeingRemoved;
224 -
225 - QModelIndexPairList saved_persistent_indexes;
226 -+ QList<QPersistentModelIndex> saved_layoutChange_parents;
227 -
228 - QHash<QModelIndex, Mapping *>::const_iterator create_mapping(
229 - const QModelIndex &source_parent) const;
230 -@@ -1331,23 +1332,23 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<Q
231 - Q_UNUSED(hint); // We can't forward Hint because we might filter additional rows or columns
232 - saved_persistent_indexes.clear();
233 -
234 -- QList<QPersistentModelIndex> parents;
235 -+ saved_layoutChange_parents.clear();
236 - for (const QPersistentModelIndex &parent : sourceParents) {
237 - if (!parent.isValid()) {
238 -- parents << QPersistentModelIndex();
239 -+ saved_layoutChange_parents << QPersistentModelIndex();
240 - continue;
241 - }
242 - const QModelIndex mappedParent = q->mapFromSource(parent);
243 - // Might be filtered out.
244 - if (mappedParent.isValid())
245 -- parents << mappedParent;
246 -+ saved_layoutChange_parents << mappedParent;
247 - }
248 -
249 - // All parents filtered out.
250 -- if (!sourceParents.isEmpty() && parents.isEmpty())
251 -+ if (!sourceParents.isEmpty() && saved_layoutChange_parents.isEmpty())
252 - return;
253 -
254 -- emit q->layoutAboutToBeChanged(parents);
255 -+ emit q->layoutAboutToBeChanged(saved_layoutChange_parents);
256 - if (persistent.indexes.isEmpty())
257 - return;
258 -
259 -@@ -1359,6 +1360,9 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersisten
260 - Q_Q(QSortFilterProxyModel);
261 - Q_UNUSED(hint); // We can't forward Hint because we might filter additional rows or columns
262 -
263 -+ if (!sourceParents.isEmpty() && saved_layoutChange_parents.isEmpty())
264 -+ return;
265 -+
266 - // Optimize: We only actually have to clear the mapping related to the contents of
267 - // sourceParents, not everything.
268 - qDeleteAll(source_index_mapping);
269 -@@ -1373,21 +1377,8 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersisten
270 - source_index_mapping.clear();
271 - }
272 -
273 -- QList<QPersistentModelIndex> parents;
274 -- for (const QPersistentModelIndex &parent : sourceParents) {
275 -- if (!parent.isValid()) {
276 -- parents << QPersistentModelIndex();
277 -- continue;
278 -- }
279 -- const QModelIndex mappedParent = q->mapFromSource(parent);
280 -- if (mappedParent.isValid())
281 -- parents << mappedParent;
282 -- }
283 --
284 -- if (!sourceParents.isEmpty() && parents.isEmpty())
285 -- return;
286 --
287 -- emit q->layoutChanged(parents);
288 -+ emit q->layoutChanged(saved_layoutChange_parents);
289 -+ saved_layoutChange_parents.clear();
290 - }
291 -
292 - void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted(
293 -diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
294 -index 38e3c68..6b98d9f 100644
295 ---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
296 -+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
297 -@@ -145,6 +145,8 @@ private slots:
298 - void canDropMimeData();
299 - void filterHint();
300 -
301 -+ void sourceLayoutChangeLeavesValidPersistentIndexes();
302 -+
303 - protected:
304 - void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
305 - void checkHierarchy(const QStringList &data, const QAbstractItemModel *model);
306 -@@ -4181,5 +4183,129 @@ void tst_QSortFilterProxyModel::filterHint()
307 - QAbstractItemModel::NoLayoutChangeHint);
308 - }
309 -
310 -+/**
311 -+
312 -+ Creates a model where each item has one child, to a set depth,
313 -+ and the last item has no children. For a model created with
314 -+ setDepth(4):
315 -+
316 -+ - 1
317 -+ - - 2
318 -+ - - - 3
319 -+ - - - - 4
320 -+*/
321 -+class StepTreeModel : public QAbstractItemModel
322 -+{
323 -+ Q_OBJECT
324 -+public:
325 -+ StepTreeModel(QObject * parent = 0)
326 -+ : QAbstractItemModel(parent), m_depth(0) {}
327 -+
328 -+ int columnCount(const QModelIndex& = QModelIndex()) const override { return 1; }
329 -+
330 -+ int rowCount(const QModelIndex& parent = QModelIndex()) const override
331 -+ {
332 -+ quintptr parentId = (parent.isValid()) ? parent.internalId() : 0;
333 -+ return (parentId < m_depth) ? 1 : 0;
334 -+ }
335 -+
336 -+ QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override
337 -+ {
338 -+ if (role != Qt::DisplayRole)
339 -+ return QVariant();
340 -+
341 -+ return QString::number(index.internalId());
342 -+ }
343 -+
344 -+ QModelIndex index(int, int, const QModelIndex& parent = QModelIndex()) const override
345 -+ {
346 -+ quintptr parentId = (parent.isValid()) ? parent.internalId() : 0;
347 -+ if (parentId >= m_depth)
348 -+ return QModelIndex();
349 -+
350 -+ return createIndex(0, 0, parentId + 1);
351 -+ }
352 -+
353 -+ QModelIndex parent(const QModelIndex& index) const override
354 -+ {
355 -+ if (index.internalId() == 0)
356 -+ return QModelIndex();
357 -+
358 -+ return createIndex(0, 0, index.internalId() - 1);
359 -+ }
360 -+
361 -+ void setDepth(quintptr depth)
362 -+ {
363 -+ int parentIdWithLayoutChange = (m_depth < depth) ? m_depth : depth;
364 -+
365 -+ QList<QPersistentModelIndex> parentsOfLayoutChange;
366 -+ parentsOfLayoutChange.push_back(createIndex(0, 0, parentIdWithLayoutChange));
367 -+
368 -+ layoutAboutToBeChanged(parentsOfLayoutChange);
369 -+
370 -+ auto existing = persistentIndexList();
371 -+
372 -+ QList<QModelIndex> updated;
373 -+
374 -+ for (auto idx : existing) {
375 -+ if (indexDepth(idx) <= depth)
376 -+ updated.push_back(idx);
377 -+ else
378 -+ updated.push_back({});
379 -+ }
380 -+
381 -+ m_depth = depth;
382 -+
383 -+ changePersistentIndexList(existing, updated);
384 -+
385 -+ layoutChanged(parentsOfLayoutChange);
386 -+ }
387 -+
388 -+private:
389 -+ static quintptr indexDepth(QModelIndex const& index)
390 -+ {
391 -+ return (index.isValid()) ? 1 + indexDepth(index.parent()) : 0;
392 -+ }
393 -+
394 -+private:
395 -+ quintptr m_depth;
396 -+};
397 -+
398 -+void tst_QSortFilterProxyModel::sourceLayoutChangeLeavesValidPersistentIndexes()
399 -+{
400 -+ StepTreeModel model;
401 -+ Q_SET_OBJECT_NAME(model);
402 -+ model.setDepth(4);
403 -+
404 -+ QSortFilterProxyModel proxy1;
405 -+ proxy1.setSourceModel(&model);
406 -+ Q_SET_OBJECT_NAME(proxy1);
407 -+
408 -+ proxy1.setFilterRegExp("1|2");
409 -+
410 -+ // The current state of things:
411 -+ // model proxy
412 -+ // - 1 - 1
413 -+ // - - 2 - - 2
414 -+ // - - - 3
415 -+ // - - - - 4
416 -+
417 -+ // The setDepth call below removes '4' with a layoutChanged call.
418 -+ // Because the proxy filters that out anyway, the proxy doesn't need
419 -+ // to emit any signals or update persistent indexes.
420 -+
421 -+ QPersistentModelIndex persistentIndex = proxy1.index(0, 0, proxy1.index(0, 0));
422 -+
423 -+ model.setDepth(3);
424 -+
425 -+ // Calling parent() causes the internalPointer to be used.
426 -+ // Before fixing QTBUG-47711, that could be a dangling pointer.
427 -+ // The use of qDebug here makes sufficient use of the heap to
428 -+ // cause corruption at runtime with normal use on linux (before
429 -+ // the fix). valgrind confirms the fix.
430 -+ qDebug() << persistentIndex.parent();
431 -+ QVERIFY(persistentIndex.parent().isValid());
432 -+}
433 -+
434 - QTEST_MAIN(tst_QSortFilterProxyModel)
435 - #include "tst_qsortfilterproxymodel.moc"
436 ---
437 -2.7.4
438 -
439 -
440
441 diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch
442 deleted file mode 100644
443 index 973649637e6..00000000000
444 --- a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch
445 +++ /dev/null
446 @@ -1,195 +0,0 @@
447 -From 0874861bcc70313c343aba5e5566ed30b69eed1c Mon Sep 17 00:00:00 2001
448 -From: Stephen Kelly <steveire@×××××.com>
449 -Date: Mon, 19 Dec 2016 21:13:57 +0000
450 -Subject: [PATCH] QSFPM: Remove data manipulation from move handlers
451 -
452 -Similar to the fix in the parent commit, incorrect updating of the
453 -internal data structures during layout changes can lead to dangling
454 -pointers being dereferenced later. Moves are treated as layoutChanges
455 -by this proxy by forwarding to the appropriate method. However, data is
456 -incorrectly cleared prior to that forwarding. Remove that, and let the
457 -layoutChange handling take appropriate action.
458 -
459 -Change-Id: Iee951e37152328a4e6a5fb8e5385c32a2fe4c0bd
460 -Reviewed-by: David Faure <david.faure@××××.com>
461 ----
462 - src/corelib/itemmodels/qsortfilterproxymodel.cpp | 67 ++++------------------
463 - .../tst_qsortfilterproxymodel.cpp | 46 +++++++++++++++
464 - 2 files changed, 58 insertions(+), 55 deletions(-)
465 -
466 -diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
467 -index 3331521..226a240 100644
468 ---- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
469 -+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
470 -@@ -1418,49 +1418,27 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsRemoved(
471 - void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeMoved(
472 - const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
473 - {
474 -- Q_Q(QSortFilterProxyModel);
475 - // Because rows which are contiguous in the source model might not be contiguous
476 - // in the proxy due to sorting, the best thing we can do here is be specific about what
477 - // parents are having their children changed.
478 - // Optimize: Emit move signals if the proxy is not sorted. Will need to account for rows
479 - // being filtered out though.
480 -
481 -- saved_persistent_indexes.clear();
482 --
483 - QList<QPersistentModelIndex> parents;
484 -- parents << q->mapFromSource(sourceParent);
485 -+ parents << sourceParent;
486 - if (sourceParent != destParent)
487 -- parents << q->mapFromSource(destParent);
488 -- emit q->layoutAboutToBeChanged(parents);
489 -- if (persistent.indexes.isEmpty())
490 -- return;
491 -- saved_persistent_indexes = store_persistent_indexes();
492 -+ parents << destParent;
493 -+ _q_sourceLayoutAboutToBeChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
494 - }
495 -
496 - void QSortFilterProxyModelPrivate::_q_sourceRowsMoved(
497 - const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
498 - {
499 -- Q_Q(QSortFilterProxyModel);
500 --
501 -- // Optimize: We only need to clear and update the persistent indexes which are children of
502 -- // sourceParent or destParent
503 -- qDeleteAll(source_index_mapping);
504 -- source_index_mapping.clear();
505 --
506 -- update_persistent_indexes(saved_persistent_indexes);
507 -- saved_persistent_indexes.clear();
508 --
509 -- if (dynamic_sortfilter && update_source_sort_column()) {
510 -- //update_source_sort_column might have created wrong mapping so we have to clear it again
511 -- qDeleteAll(source_index_mapping);
512 -- source_index_mapping.clear();
513 -- }
514 --
515 - QList<QPersistentModelIndex> parents;
516 -- parents << q->mapFromSource(sourceParent);
517 -+ parents << sourceParent;
518 - if (sourceParent != destParent)
519 -- parents << q->mapFromSource(destParent);
520 -- emit q->layoutChanged(parents);
521 -+ parents << destParent;
522 -+ _q_sourceLayoutChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
523 - }
524 -
525 - void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeInserted(
526 -@@ -1522,42 +1500,21 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
527 - void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeMoved(
528 - const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
529 - {
530 -- Q_Q(QSortFilterProxyModel);
531 --
532 -- saved_persistent_indexes.clear();
533 --
534 - QList<QPersistentModelIndex> parents;
535 -- parents << q->mapFromSource(sourceParent);
536 -+ parents << sourceParent;
537 - if (sourceParent != destParent)
538 -- parents << q->mapFromSource(destParent);
539 -- emit q->layoutAboutToBeChanged(parents);
540 --
541 -- if (persistent.indexes.isEmpty())
542 -- return;
543 -- saved_persistent_indexes = store_persistent_indexes();
544 -+ parents << destParent;
545 -+ _q_sourceLayoutAboutToBeChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
546 - }
547 -
548 - void QSortFilterProxyModelPrivate::_q_sourceColumnsMoved(
549 - const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
550 - {
551 -- Q_Q(QSortFilterProxyModel);
552 --
553 -- qDeleteAll(source_index_mapping);
554 -- source_index_mapping.clear();
555 --
556 -- update_persistent_indexes(saved_persistent_indexes);
557 -- saved_persistent_indexes.clear();
558 --
559 -- if (dynamic_sortfilter && update_source_sort_column()) {
560 -- qDeleteAll(source_index_mapping);
561 -- source_index_mapping.clear();
562 -- }
563 --
564 - QList<QPersistentModelIndex> parents;
565 -- parents << q->mapFromSource(sourceParent);
566 -+ parents << sourceParent;
567 - if (sourceParent != destParent)
568 -- parents << q->mapFromSource(destParent);
569 -- emit q->layoutChanged(parents);
570 -+ parents << destParent;
571 -+ _q_sourceLayoutChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
572 - }
573 -
574 - /*!
575 -diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
576 -index 6b98d9f..7b6c470 100644
577 ---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
578 -+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
579 -@@ -146,6 +146,7 @@ private slots:
580 - void filterHint();
581 -
582 - void sourceLayoutChangeLeavesValidPersistentIndexes();
583 -+ void rowMoveLeavesValidPersistentIndexes();
584 -
585 - protected:
586 - void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
587 -@@ -4307,5 +4308,50 @@ void tst_QSortFilterProxyModel::sourceLayoutChangeLeavesValidPersistentIndexes()
588 - QVERIFY(persistentIndex.parent().isValid());
589 - }
590 -
591 -+void tst_QSortFilterProxyModel::rowMoveLeavesValidPersistentIndexes()
592 -+{
593 -+ DynamicTreeModel model;
594 -+ Q_SET_OBJECT_NAME(model);
595 -+
596 -+ QList<int> ancestors;
597 -+ for (auto i = 0; i < 5; ++i)
598 -+ {
599 -+ Q_UNUSED(i);
600 -+ ModelInsertCommand insertCommand(&model);
601 -+ insertCommand.setAncestorRowNumbers(ancestors);
602 -+ insertCommand.setStartRow(0);
603 -+ insertCommand.setEndRow(0);
604 -+ insertCommand.doCommand();
605 -+ ancestors.push_back(0);
606 -+ }
607 -+
608 -+ QSortFilterProxyModel proxy1;
609 -+ proxy1.setSourceModel(&model);
610 -+ Q_SET_OBJECT_NAME(proxy1);
611 -+
612 -+ proxy1.setFilterRegExp("1|2");
613 -+
614 -+ auto item5 = model.match(model.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
615 -+ auto item3 = model.match(model.index(0, 0), Qt::DisplayRole, "3", 1, Qt::MatchRecursive).first();
616 -+
617 -+ Q_ASSERT(item5.isValid());
618 -+ Q_ASSERT(item3.isValid());
619 -+
620 -+ QPersistentModelIndex persistentIndex = proxy1.match(proxy1.index(0, 0), Qt::DisplayRole, "2", 1, Qt::MatchRecursive).first();
621 -+
622 -+ ModelMoveCommand moveCommand(&model, 0);
623 -+ moveCommand.setAncestorRowNumbers(QList<int>{0, 0, 0, 0});
624 -+ moveCommand.setStartRow(0);
625 -+ moveCommand.setEndRow(0);
626 -+ moveCommand.setDestRow(0);
627 -+ moveCommand.setDestAncestors(QList<int>{0, 0, 0});
628 -+ moveCommand.doCommand();
629 -+
630 -+ // Calling parent() causes the internalPointer to be used.
631 -+ // Before fixing QTBUG-47711 (moveRows case), that could be
632 -+ // a dangling pointer.
633 -+ QVERIFY(persistentIndex.parent().isValid());
634 -+}
635 -+
636 - QTEST_MAIN(tst_QSortFilterProxyModel)
637 - #include "tst_qsortfilterproxymodel.moc"
638 ---
639 -2.7.4
640 -
641 -
642
643 diff --git a/dev-qt/qtgui/files/qtgui-5.7.1-qclipboard.patch b/dev-qt/qtgui/files/qtgui-5.7.1-qclipboard.patch
644 deleted file mode 100644
645 index 42ee58b611f..00000000000
646 --- a/dev-qt/qtgui/files/qtgui-5.7.1-qclipboard.patch
647 +++ /dev/null
648 @@ -1,39 +0,0 @@
649 -From 291eba6f8099a0fec8fbd9cf8a1fb67e5c9f4f8d Mon Sep 17 00:00:00 2001
650 -From: Palo Kisa <palo.kisa@×××××.com>
651 -Date: Mon, 7 Nov 2016 18:27:17 +0100
652 -Subject: QClipboard: Fix emitting changed() in XCB
653 -
654 -In XCB environment the QClipboard::changed() was not delivered if the
655 -QClipboard::clear() was issued by other Qt app/process.
656 -
657 -If the QClipboard::clear() is used, then the owner in
658 -xcb_xfixes_selection_notify_event_t is XCB_NONE, so we need make the
659 -decission to handle this event by the selection_timestamp and our
660 -m_timestamp[mode].
661 -
662 -Task-number: QTBUG-56972
663 -Change-Id: If4c486ac02223eac506465cac7ff1a07bd02a187
664 -Reviewed-by: Lars Knoll <lars.knoll@××.io>
665 ----
666 - src/plugins/platforms/xcb/qxcbclipboard.cpp | 6 ++++--
667 - 1 file changed, 4 insertions(+), 2 deletions(-)
668 -
669 -diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp
670 -index d44ebae..40abef4 100644
671 ---- a/src/plugins/platforms/xcb/qxcbclipboard.cpp
672 -+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp
673 -@@ -723,8 +723,10 @@ void QXcbClipboard::handleXFixesSelectionRequest(xcb_xfixes_selection_notify_eve
674 - if (mode > QClipboard::Selection)
675 - return;
676 -
677 -- // here we care only about the xfixes events that come from non Qt processes
678 -- if (event->owner != XCB_NONE && event->owner != owner()) {
679 -+ // Note1: Here we care only about the xfixes events that come from other processes.
680 -+ // Note2: If the QClipboard::clear() is issued, event->owner is XCB_NONE,
681 -+ // so we check selection_timestamp to not handle our own QClipboard::clear().
682 -+ if (event->owner != owner() && event->selection_timestamp > m_timestamp[mode]) {
683 - if (!m_xClipboard[mode]) {
684 - m_xClipboard[mode].reset(new QXcbClipboardMime(mode, this));
685 - } else {
686 ---
687 -cgit v1.0-4-g1e03
688
689 diff --git a/dev-qt/qtgui/files/qtgui-5.7.1-x32.patch b/dev-qt/qtgui/files/qtgui-5.7.1-x32.patch
690 deleted file mode 100644
691 index 9cfc29d1d08..00000000000
692 --- a/dev-qt/qtgui/files/qtgui-5.7.1-x32.patch
693 +++ /dev/null
694 @@ -1,34 +0,0 @@
695 -From 92805a0e9c488e47280e93f65e5378818e340ad1 Mon Sep 17 00:00:00 2001
696 -From: Laszlo Agocs <laszlo.agocs@××.io>
697 -Date: Mon, 7 Nov 2016 11:23:21 +0100
698 -Subject: Fix EGL break on Debian X32
699 -
700 -Change to QT_POINTER_SIZE instead of Q_PROCESSOR_WORDSIZE. The latter
701 -is 8 due to targeting 64-bit, but pointers are 32-bit still in such
702 -builds. For the condition in question it is the pointer size that
703 -matters.
704 -
705 -Task-number: QTBUG-56686
706 -Change-Id: I96c203cae91ceb8404606de605c4fdb1a02a9d5f
707 -Reviewed-by: Dmitry Shachnev <mitya57@×××××.com>
708 -Reviewed-by: Thiago Macieira <thiago.macieira@×××××.com>
709 ----
710 - src/platformsupport/eglconvenience/qt_egl_p.h | 2 +-
711 - 1 file changed, 1 insertion(+), 1 deletion(-)
712 -
713 -diff --git a/src/platformsupport/eglconvenience/qt_egl_p.h b/src/platformsupport/eglconvenience/qt_egl_p.h
714 -index 615ee4b80a..b1495c9f9d 100644
715 ---- a/src/platformsupport/eglconvenience/qt_egl_p.h
716 -+++ b/src/platformsupport/eglconvenience/qt_egl_p.h
717 -@@ -83,7 +83,7 @@ struct QtEglConverter<uint32_t, uintptr_t>
718 - { return v; }
719 - };
720 -
721 --#if Q_PROCESSOR_WORDSIZE > 4
722 -+#if QT_POINTER_SIZE > 4
723 - template <>
724 - struct QtEglConverter<uintptr_t, uint32_t>
725 - {
726 ---
727 -cgit v1.1-6-g87c4
728 -
729
730 diff --git a/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch b/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch
731 deleted file mode 100644
732 index 8aede46c3b4..00000000000
733 --- a/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch
734 +++ /dev/null
735 @@ -1,56 +0,0 @@
736 -From d25346417238b7dc0fb37359a9b56eff2908a5dc Mon Sep 17 00:00:00 2001
737 -From: =?utf8?q?Daniel=20Vr=C3=A1til?= <daniel.vratil@××××.com>
738 -Date: Mon, 18 Sep 2017 22:33:55 +0200
739 -Subject: [PATCH] Only call mysql_library_end() once when using MariaDB
740 -
741 -MariaDB allows only a single call to mysql_library_end(), all subsequent calls
742 -to mysql_library_init() or any other API call will fail. Since QMYSQLDriver
743 -calls mysql_library_end() function whenever the refcount drops to 0, this
744 -breaks applications that close and reopen database connections.
745 -
746 -This change registers call to mysql_library_init() via qAddPostRoutine()
747 -when compiled against MariaDB, so that we only call it once.
748 -
749 -Task-number: QTBUG-63108
750 -Change-Id: I22c1f0c5b081216f12596a32748dca25cae919e9
751 -Reviewed-by: Andy Shaw <andy.shaw@××.io>
752 ----
753 - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 18 ++++++++++++------
754 - 1 file changed, 12 insertions(+), 6 deletions(-)
755 -
756 -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
757 -index ee439fa..6e428fb 100644
758 ---- a/src/sql/drivers/mysql/qsql_mysql.cpp
759 -+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
760 -@@ -1158,16 +1158,22 @@ static void qLibraryInit()
761 - }
762 - # endif // MYSQL_VERSION_ID
763 - #endif // Q_NO_MYSQL_EMBEDDED
764 -+
765 -+#ifdef MARIADB_BASE_VERSION
766 -+ qAddPostRoutine(mysql_server_end);
767 -+#endif
768 - }
769 -
770 - static void qLibraryEnd()
771 - {
772 --#ifndef Q_NO_MYSQL_EMBEDDED
773 --# if MYSQL_VERSION_ID > 40000
774 --# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
775 -- mysql_library_end();
776 --# else
777 -- mysql_server_end();
778 -+#if !defined(MARIADB_BASE_VERSION)
779 -+# if !defined(Q_NO_MYSQL_EMBEDDED)
780 -+# if MYSQL_VERSION_ID > 40000
781 -+# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
782 -+ mysql_library_end();
783 -+# else
784 -+ mysql_server_end();
785 -+# endif
786 - # endif
787 - # endif
788 - #endif
789 ---
790 -2.7.4
791 -
792
793 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-fix-system-ffmpeg.patch b/dev-qt/qtwebengine/files/qtwebengine-5.7.0-fix-system-ffmpeg.patch
794 deleted file mode 100644
795 index 71881e0f77c..00000000000
796 --- a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-fix-system-ffmpeg.patch
797 +++ /dev/null
798 @@ -1,13 +0,0 @@
799 -diff -Naur qtwebengine-opensource-src-5.7.0.orig/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
800 ---- qtwebengine-opensource-src-5.7.0.orig/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h 2016-11-23 13:01:20.929772871 -0800
801 -+++ qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h 2016-11-23 13:02:18.879462854 -0800
802 -@@ -24,7 +24,9 @@
803 - // Disable deprecated features which result in spammy compile warnings. This
804 - // list of defines must mirror those in the 'defines' section of BUILD.gn file &
805 - // ffmpeg.gyp file or the headers below will generate different structures!
806 -+#if !defined(USE_SYSTEM_FFMPEG)
807 - #define FF_API_CONVERGENCE_DURATION 0
808 -+#endif
809 - // Upstream libavcodec/utils.c still uses the deprecated
810 - // av_dup_packet(), causing deprecation warnings.
811 - // The normal fix for such things is to disable the feature as below,
812
813 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-icu58.patch b/dev-qt/qtwebengine/files/qtwebengine-5.7.0-icu58.patch
814 deleted file mode 100644
815 index ced5367c482..00000000000
816 --- a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-icu58.patch
817 +++ /dev/null
818 @@ -1,51 +0,0 @@
819 -diff -Naur qtwebengine-opensource-src-5.7.0.orig/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
820 ---- qtwebengine-opensource-src-5.7.0.orig/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp 2016-11-15 17:07:38.680665385 -0800
821 -+++ qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp 2016-11-15 17:12:17.564001354 -0800
822 -@@ -26,6 +26,9 @@
823 - #include "wtf/StdLibExtras.h"
824 - #include "wtf/text/CharacterNames.h"
825 -
826 -+#include <unicode/uchar.h>
827 -+#include <unicode/uvernum.h>
828 -+
829 - namespace blink {
830 -
831 - unsigned numGraphemeClusters(const String& string)
832 -@@ -122,13 +125,18 @@
833 - { B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), 0, B(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0, 0, 0) }, // DEL
834 - };
835 -
836 -+#if U_ICU_VERSION_MAJOR_NUM >= 58
837 -+#define BA_LB_COUNT (U_LB_COUNT - 3)
838 -+#else
839 -+#define BA_LB_COUNT U_LB_COUNT
840 -+#endif
841 - // Line breaking table for CSS word-break: break-all. This table differs from
842 - // asciiLineBreakTable in:
843 - // - Indices are Line Breaking Classes defined in UAX#14 Unicode Line Breaking
844 - // Algorithm: http://unicode.org/reports/tr14/#DescriptionOfProperties
845 - // - 1 indicates additional break opportunities. 0 indicates to fallback to
846 - // normal line break, not "prohibit break."
847 --static const unsigned char breakAllLineBreakClassTable[][U_LB_COUNT / 8 + 1] = {
848 -+static const unsigned char breakAllLineBreakClassTable[][BA_LB_COUNT / 8 + 1] = {
849 - // XX AI AL B2 BA BB BK CB CL CM CR EX GL HY ID IN IS LF NS NU OP PO PR QU SA SG SP SY ZW NL WJ H2 H3 JL JT JV CP CJ HL RI
850 - { B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0) }, // XX
851 - { B(0, 1, 1, 0, 1, 0, 0, 0), B(0, 0, 0, 0, 0, 1, 0, 0), B(0, 0, 0, 1, 1, 0, 1, 0), B(1, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 1, 0) }, // AI
852 -@@ -178,7 +186,7 @@
853 - #undef AL
854 -
855 - static_assert(WTF_ARRAY_LENGTH(asciiLineBreakTable) == asciiLineBreakTableLastChar - asciiLineBreakTableFirstChar + 1, "asciiLineBreakTable should be consistent");
856 --static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == U_LB_COUNT, "breakAllLineBreakClassTable should be consistent");
857 -+static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == BA_LB_COUNT, "breakAllLineBreakClassTable should be consistent");
858 -
859 - static inline bool shouldBreakAfter(UChar lastCh, UChar ch, UChar nextCh)
860 - {
861 -@@ -209,7 +217,7 @@
862 -
863 - static inline bool shouldBreakAfterBreakAll(ULineBreak lastLineBreak, ULineBreak lineBreak)
864 - {
865 -- if (lineBreak >= 0 && lineBreak < U_LB_COUNT && lastLineBreak >= 0 && lastLineBreak < U_LB_COUNT) {
866 -+ if (lineBreak >= 0 && lineBreak < BA_LB_COUNT && lastLineBreak >= 0 && lastLineBreak < BA_LB_COUNT) {
867 - const unsigned char* tableRow = breakAllLineBreakClassTable[lastLineBreak];
868 - return tableRow[lineBreak / 8] & (1 << (lineBreak % 8));
869 - }
870
871 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-undef-madv_free.patch b/dev-qt/qtwebengine/files/qtwebengine-5.7.0-undef-madv_free.patch
872 deleted file mode 100644
873 index 193e7136206..00000000000
874 --- a/dev-qt/qtwebengine/files/qtwebengine-5.7.0-undef-madv_free.patch
875 +++ /dev/null
876 @@ -1,33 +0,0 @@
877 -From fa8cdb3a32c377b6290d0a92d2522186bcd48293 Mon Sep 17 00:00:00 2001
878 -From: Allan Sandfeld Jensen <allan.jensen@××××××××××××.com>
879 -Date: Tue, 9 Aug 2016 16:21:29 +0200
880 -Subject: Do not depend on Linux 4.5
881 -
882 -Avoid using MADV_FREE that was only recently added to Linux. It will fail when
883 -run on older Linux kernels.
884 -
885 -Change-Id: I9b0369fb31402f088b2327c12f70dd39f5e4c8c0
886 -Reviewed-by: Peter Varga <pvarga@××××××××××××.hu>
887 ----
888 - chromium/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp | 5 +++++
889 - 1 file changed, 5 insertions(+)
890 -
891 -diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp
892 -index 12c9a7b..1639013 100644
893 ---- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp
894 -+++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp
895 -@@ -39,6 +39,11 @@
896 -
897 - #include <sys/mman.h>
898 -
899 -+#if OS(LINUX) && defined(MADV_FREE)
900 -+// Added in Linux 4.5, but we don't want to depend on 4.5 at runtime
901 -+#undef MADV_FREE
902 -+#endif
903 -+
904 - #ifndef MADV_FREE
905 - #define MADV_FREE MADV_DONTNEED
906 - #endif
907 ---
908 -cgit v1.0-4-g1e03
909 -
910
911 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.7.1-fix-audio-detection.patch b/dev-qt/qtwebengine/files/qtwebengine-5.7.1-fix-audio-detection.patch
912 deleted file mode 100644
913 index 597554e685c..00000000000
914 --- a/dev-qt/qtwebengine/files/qtwebengine-5.7.1-fix-audio-detection.patch
915 +++ /dev/null
916 @@ -1,23 +0,0 @@
917 -# dev-qt/qtwebengine: Fix detecting audio backends.
918 -
919 -# The upstream change doesn't really work for us, so we'll make
920 -# it work with us.
921 -# Gentoo-Bug: https://bugs.gentoo.org/603498
922 -
923 ---- /src/core/config/linux.pri 2016-12-23 00:05:41.057955774 +0200
924 -+++ /src/core/config/linux.pri 2016-12-23 00:09:39.000573909 +0200
925 -@@ -35,12 +35,12 @@
926 - contains(QT_CONFIG, system-png): GYP_CONFIG += use_system_libpng=1
927 - contains(QT_CONFIG, system-jpeg): GYP_CONFIG += use_system_libjpeg=1
928 - contains(QT_CONFIG, system-harfbuzz): GYP_CONFIG += use_system_harfbuzz=1
929 --contains(QT_CONFIG, pulseaudio) {
930 -+use?(pulseaudio) {
931 - GYP_CONFIG += use_pulseaudio=1
932 - } else {
933 - GYP_CONFIG += use_pulseaudio=0
934 - }
935 --contains(QT_CONFIG, alsa) {
936 -+use?(alsa) {
937 - GYP_CONFIG += use_alsa=1
938 - } else {
939 - GYP_CONFIG += use_alsa=0
940
941 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.7.1-gcc-7.patch b/dev-qt/qtwebengine/files/qtwebengine-5.7.1-gcc-7.patch
942 deleted file mode 100644
943 index a5c3072a477..00000000000
944 --- a/dev-qt/qtwebengine/files/qtwebengine-5.7.1-gcc-7.patch
945 +++ /dev/null
946 @@ -1,144 +0,0 @@
947 -From 64fdd317d4127142ad9e967197a2df6ac81ef55f Mon Sep 17 00:00:00 2001
948 -From: Allan Sandfeld Jensen <allan.jensen@××.io>
949 -Date: Wed, 29 Mar 2017 17:42:18 +0200
950 -Subject: [PATCH] Fix build with GCC 7.0
951 -MIME-Version: 1.0
952 -Content-Type: text/plain; charset=utf8
953 -Content-Transfer-Encoding: 8bit
954 -
955 -Fixes some ambiguities and outright wrong code GCC 7 doesn't accept but
956 -earlier compilers did.
957 -
958 -Task-number:QTBUG-59776
959 -Change-Id: I012f121842ac6cde49db0d571efc62aabe2115e3
960 -Reviewed-by: Michael Brüning <michael.bruning@××.io>
961 ----
962 - .../mojo/public/cpp/bindings/interface_ptr_info.h | 2 +-
963 - .../third_party/WebKit/Source/wtf/LinkedHashSet.h | 2 ++
964 - chromium/v8/src/objects-body-descriptors.h | 2 +-
965 - chromium/v8/src/objects-inl.h | 19 +++++++++++++++++++
966 - chromium/v8/src/objects.h | 16 ++--------------
967 - 5 files changed, 25 insertions(+), 16 deletions(-)
968 -
969 -diff --git a/src/3rdparty/chromium/mojo/public/cpp/bindings/interface_ptr_info.h b/src/3rdparty/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
970 -index 5bd29d5..c94a5ac 100644
971 ---- a/src/3rdparty/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
972 -+++ b/src/3rdparty/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
973 -@@ -34,7 +34,7 @@ class InterfacePtrInfo {
974 -
975 - InterfacePtrInfo& operator=(InterfacePtrInfo&& other) {
976 - if (this != &other) {
977 -- handle_ = other.handle_.Pass();
978 -+ handle_ = std::move(other.handle_);
979 - version_ = other.version_;
980 - other.version_ = 0u;
981 - }
982 ---
983 -2.7.4
984 -From 493441248c82d9f39d0947e3bbf4571736e1cf85 Mon Sep 17 00:00:00 2001
985 -From: Allan Sandfeld Jensen <allan.jensen@××.io>
986 -Date: Wed, 29 Mar 2017 15:53:00 +0200
987 -Subject: [PATCH 1/1] Fix build with GCC 7.0
988 -MIME-Version: 1.0
989 -Content-Type: text/plain; charset=utf8
990 -Content-Transfer-Encoding: 8bit
991 -
992 -Fixes a few problems with using undeclared functions and ambigious
993 -code.
994 -
995 -Task-number: QTBUG-59776
996 -Change-Id: I59813919b4867d5dd3499a45baed004a1a1c1a3c
997 -Reviewed-by: Michael Brüning <michael.bruning@××.io>
998 ----
999 - chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h | 2 ++
1000 - .../third_party/pdfium/fpdfsdk/javascript/global.cpp | 8 ++++----
1001 - chromium/v8/src/objects-body-descriptors.h | 2 +-
1002 - chromium/v8/src/objects-inl.h | 18 ++++++++++++++++++
1003 - chromium/v8/src/objects.h | 16 ++--------------
1004 - 5 files changed, 27 insertions(+), 19 deletions(-)
1005 -
1006 -diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
1007 -index e85c72f..6f94cd6 100644
1008 ---- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
1009 -+++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
1010 -@@ -542,6 +542,8 @@ inline LinkedHashSet<T, U, V, W>& LinkedHashSet<T, U, V, W>::operator=(LinkedHas
1011 - return *this;
1012 - }
1013 -
1014 -+inline void swapAnchor(LinkedHashSetNodeBase& a, LinkedHashSetNodeBase& b);
1015 -+
1016 - template<typename T, typename U, typename V, typename W>
1017 - inline void LinkedHashSet<T, U, V, W>::swap(LinkedHashSet& other)
1018 - {
1019 -diff --git a/src/3rdparty/chromium/v8/src/objects-body-descriptors.h b/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
1020 -index 91cb888..a1c3634 100644
1021 ---- a/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
1022 -+++ b/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
1023 -@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase {
1024 -
1025 - template <typename StaticVisitor>
1026 - static inline void IterateBody(HeapObject* obj, int object_size) {
1027 -- IterateBody(obj);
1028 -+ IterateBody<StaticVisitor>(obj);
1029 - }
1030 - };
1031 -
1032 -diff --git a/src/3rdparty/chromium/v8/src/objects-inl.h b/src/3rdparty/chromium/v8/src/objects-inl.h
1033 -index 58441d3..4c486ea 100644
1034 ---- a/src/3rdparty/chromium/v8/src/objects-inl.h
1035 -+++ b/src/3rdparty/chromium/v8/src/objects-inl.h
1036 -@@ -7588,6 +7588,24 @@ bool GlobalDictionaryShape::IsDeleted(Dictionary* dict, int entry) {
1037 - }
1038 -
1039 -
1040 -+template <typename Derived, typename Shape, typename Key>
1041 -+inline uint32_t HashTable<Derived,Shape,Key>::Hash(Key key) {
1042 -+ if (Shape::UsesSeed) {
1043 -+ return Shape::SeededHash(key, GetHeap()->HashSeed());
1044 -+ } else {
1045 -+ return Shape::Hash(key);
1046 -+ }
1047 -+}
1048 -+
1049 -+template <typename Derived, typename Shape, typename Key>
1050 -+inline uint32_t HashTable<Derived,Shape,Key>::HashForObject(Key key, Object* object) {
1051 -+ if (Shape::UsesSeed) {
1052 -+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
1053 -+ } else {
1054 -+ return Shape::HashForObject(key, object);
1055 -+ }
1056 -+}
1057 -+
1058 - bool ObjectHashTableShape::IsMatch(Handle<Object> key, Object* other) {
1059 - return key->SameValue(other);
1060 - }
1061 -diff --git a/src/3rdparty/chromium/v8/src/objects.h b/src/3rdparty/chromium/v8/src/objects.h
1062 -index 7d774be..42da5fa 100644
1063 ---- a/src/3rdparty/chromium/v8/src/objects.h
1064 -+++ b/src/3rdparty/chromium/v8/src/objects.h
1065 -@@ -3194,21 +3194,9 @@ class HashTable : public HashTableBase {
1066 - typedef Shape ShapeT;
1067 -
1068 - // Wrapper methods
1069 -- inline uint32_t Hash(Key key) {
1070 -- if (Shape::UsesSeed) {
1071 -- return Shape::SeededHash(key, GetHeap()->HashSeed());
1072 -- } else {
1073 -- return Shape::Hash(key);
1074 -- }
1075 -- }
1076 -+ inline uint32_t Hash(Key key);
1077 -
1078 -- inline uint32_t HashForObject(Key key, Object* object) {
1079 -- if (Shape::UsesSeed) {
1080 -- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
1081 -- } else {
1082 -- return Shape::HashForObject(key, object);
1083 -- }
1084 -- }
1085 -+ inline uint32_t HashForObject(Key key, Object* object);
1086 -
1087 - // Returns a new HashTable object.
1088 - MUST_USE_RESULT static Handle<Derived> New(
1089 ---
1090 -2.7.4