Pull in upstream fixes
This commit is contained in:
parent
287f373520
commit
da7d4a2096
@ -3,7 +3,7 @@
|
|||||||
Summary: Qt5 - Wayland platform support and QtCompositor module
|
Summary: Qt5 - Wayland platform support and QtCompositor module
|
||||||
Name: qt5-%{qt_module}
|
Name: qt5-%{qt_module}
|
||||||
Version: 5.12.4
|
Version: 5.12.4
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
|
|
||||||
License: LGPLv3
|
License: LGPLv3
|
||||||
Url: http://www.qt.io
|
Url: http://www.qt.io
|
||||||
@ -15,6 +15,8 @@ Patch0: qtwayland-fix-stuttering-when-gui-thread-is-busy.patch
|
|||||||
Patch1: qtwayland-reset-frame-callback-timer-when-hiding-window.patch
|
Patch1: qtwayland-reset-frame-callback-timer-when-hiding-window.patch
|
||||||
Patch2: qtwayland-emit-wl-surfare-lifetime-signals.patch
|
Patch2: qtwayland-emit-wl-surfare-lifetime-signals.patch
|
||||||
Patch3: qtwayland-dont-send-fake-surface-created-destroyed-events.patch
|
Patch3: qtwayland-dont-send-fake-surface-created-destroyed-events.patch
|
||||||
|
Patch4: qtwayland-make-handleupdate-aware-of-exposure-changes.patch
|
||||||
|
Patch5: qtwayland-dont-crash-when-start-drag-without-dragfocus.patch
|
||||||
|
|
||||||
# filter qml provides
|
# filter qml provides
|
||||||
%global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$
|
%global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$
|
||||||
@ -118,6 +120,9 @@ popd
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 02 2019 Jan Grulich <jgrulich@redhat.com> - 5.12.3-3
|
||||||
|
- Pull in upstream fixes
|
||||||
|
|
||||||
* Thu Jun 27 2019 Jan Grulich <jgrulich@redhat.com> - 5.12.4-2
|
* Thu Jun 27 2019 Jan Grulich <jgrulich@redhat.com> - 5.12.4-2
|
||||||
- Pull in upstream fixes
|
- Pull in upstream fixes
|
||||||
|
|
||||||
|
16
qtwayland-dont-crash-when-start-drag-without-dragfocus.patch
Normal file
16
qtwayland-dont-crash-when-start-drag-without-dragfocus.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||||
|
index 300c9de..11984f9 100644
|
||||||
|
--- a/src/client/qwaylanddatadevice.cpp
|
||||||
|
+++ b/src/client/qwaylanddatadevice.cpp
|
||||||
|
@@ -111,7 +111,10 @@ void QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
|
||||||
|
if (!origin)
|
||||||
|
origin = m_display->currentInputDevice()->touchFocus();
|
||||||
|
|
||||||
|
- start_drag(m_dragSource->object(), origin->object(), icon->object(), m_display->currentInputDevice()->serial());
|
||||||
|
+ if (origin)
|
||||||
|
+ start_drag(m_dragSource->object(), origin->object(), icon->object(), m_display->currentInputDevice()->serial());
|
||||||
|
+ else
|
||||||
|
+ qCDebug(lcQpaWayland) << "Couldn't start a drag because the origin window could not be found.";
|
||||||
|
}
|
||||||
|
|
||||||
|
void QWaylandDataDevice::cancelDrag()
|
62
qtwayland-make-handleupdate-aware-of-exposure-changes.patch
Normal file
62
qtwayland-make-handleupdate-aware-of-exposure-changes.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||||
|
index ed0fe87..da1b6a0 100644
|
||||||
|
--- a/src/client/qwaylandwindow.cpp
|
||||||
|
+++ b/src/client/qwaylandwindow.cpp
|
||||||
|
@@ -79,6 +79,8 @@ Q_LOGGING_CATEGORY(lcWaylandBackingstore, "qt.qpa.wayland.backingstore")
|
||||||
|
|
||||||
|
QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
||||||
|
|
||||||
|
+QReadWriteLock mSurfaceLock;
|
||||||
|
+
|
||||||
|
QWaylandWindow::QWaylandWindow(QWindow *window)
|
||||||
|
: QPlatformWindow(window)
|
||||||
|
, mDisplay(waylandScreen()->display())
|
||||||
|
@@ -209,6 +211,7 @@ void QWaylandWindow::initWindow()
|
||||||
|
void QWaylandWindow::initializeWlSurface()
|
||||||
|
{
|
||||||
|
Q_ASSERT(!isInitialized());
|
||||||
|
+ QWriteLocker lock(&mSurfaceLock);
|
||||||
|
init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this)));
|
||||||
|
emit wlSurfaceCreated();
|
||||||
|
}
|
||||||
|
@@ -243,6 +246,7 @@ void QWaylandWindow::reset()
|
||||||
|
mSubSurfaceWindow = nullptr;
|
||||||
|
if (isInitialized()) {
|
||||||
|
emit wlSurfaceDestroyed();
|
||||||
|
+ QWriteLocker lock(&mSurfaceLock);
|
||||||
|
destroy();
|
||||||
|
}
|
||||||
|
mScreens.clear();
|
||||||
|
@@ -1138,6 +1142,10 @@ void QWaylandWindow::requestUpdate()
|
||||||
|
void QWaylandWindow::handleUpdate()
|
||||||
|
{
|
||||||
|
// TODO: Should sync subsurfaces avoid requesting frame callbacks?
|
||||||
|
+ QReadLocker lock(&mSurfaceLock);
|
||||||
|
+ if (!isInitialized()) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (mFrameCallback) {
|
||||||
|
wl_callback_destroy(mFrameCallback);
|
||||||
|
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||||
|
index 746a7a5..4606a7b 100644
|
||||||
|
--- a/src/client/qwaylandwindow_p.h
|
||||||
|
+++ b/src/client/qwaylandwindow_p.h
|
||||||
|
@@ -53,6 +53,8 @@
|
||||||
|
|
||||||
|
#include <QtCore/QWaitCondition>
|
||||||
|
#include <QtCore/QMutex>
|
||||||
|
+#include <QtCore/QReadWriteLock>
|
||||||
|
+
|
||||||
|
#include <QtGui/QIcon>
|
||||||
|
#include <QtCore/QVariant>
|
||||||
|
#include <QtCore/QLoggingCategory>
|
||||||
|
@@ -275,6 +277,8 @@ private:
|
||||||
|
static QMutex mFrameSyncMutex;
|
||||||
|
static QWaylandWindow *mMouseGrab;
|
||||||
|
|
||||||
|
+ QReadWriteLock mSurfaceLock;
|
||||||
|
+
|
||||||
|
friend class QWaylandSubSurface;
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user