Accepting request 758900 from KDE:Qt:5.14
Qt 5.14.0 OBS-URL: https://build.opensuse.org/request/show/758900 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwayland?expand=0&rev=31
This commit is contained in:
commit
8609de42c1
122
0001-Avoid-animating-single-frame-cursors.patch
Normal file
122
0001-Avoid-animating-single-frame-cursors.patch
Normal file
@ -0,0 +1,122 @@
|
||||
From 8a200369acf25841cb4fbfbc6b3866d851388306 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Thu, 28 Nov 2019 02:31:17 +0100
|
||||
Subject: [PATCH] Avoid animating single frame cursors
|
||||
|
||||
Currently to determine if a cursor is animated or not we check the
|
||||
cursor theme delay.
|
||||
|
||||
This doesn't work in practice as by default many cursor themes have a
|
||||
delay of 50 set even if they don't animate.
|
||||
|
||||
This comes from xcursorgen which specifies a delay of 50ms if there
|
||||
isn't anything set in the config.
|
||||
(https://github.com/freedesktop/xcursorgen/blob/master/xcursorgen.c#L92)
|
||||
|
||||
Given many themes will have a delay we should also check the number of
|
||||
images in a given cursor.
|
||||
|
||||
In order to do that without a double lookup QWaylandCursor needed to
|
||||
return the native wl_cursor, not wl_cursor_image and move the relevant
|
||||
logic.
|
||||
|
||||
Change-Id: Ie782ace8054910ae76e61cab33ceca0377194929
|
||||
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
||||
---
|
||||
src/client/qwaylandcursor.cpp | 12 ++----------
|
||||
src/client/qwaylandcursor_p.h | 3 +--
|
||||
src/client/qwaylandinputdevice.cpp | 16 ++++++++++++----
|
||||
3 files changed, 15 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp
|
||||
index 4356b23a..1d3d88be 100644
|
||||
--- a/src/client/qwaylandcursor.cpp
|
||||
+++ b/src/client/qwaylandcursor.cpp
|
||||
@@ -219,7 +219,7 @@ wl_cursor *QWaylandCursorTheme::requestCursor(WaylandCursor shape)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
-::wl_cursor_image *QWaylandCursorTheme::cursorImage(Qt::CursorShape shape, uint millisecondsIntoAnimation)
|
||||
+::wl_cursor *QWaylandCursorTheme::cursor(Qt::CursorShape shape)
|
||||
{
|
||||
struct wl_cursor *waylandCursor = nullptr;
|
||||
|
||||
@@ -237,15 +237,7 @@ wl_cursor *QWaylandCursorTheme::requestCursor(WaylandCursor shape)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- int frame = wl_cursor_frame(waylandCursor, millisecondsIntoAnimation);
|
||||
- ::wl_cursor_image *image = waylandCursor->images[frame];
|
||||
- ::wl_buffer *buffer = wl_cursor_image_get_buffer(image);
|
||||
- if (!buffer) {
|
||||
- qCWarning(lcQpaWayland) << "Could not find buffer for cursor";
|
||||
- return nullptr;
|
||||
- }
|
||||
-
|
||||
- return image;
|
||||
+ return waylandCursor;
|
||||
}
|
||||
|
||||
QWaylandCursor::QWaylandCursor(QWaylandDisplay *display)
|
||||
diff --git a/src/client/qwaylandcursor_p.h b/src/client/qwaylandcursor_p.h
|
||||
index a4605f3d..751ffa68 100644
|
||||
--- a/src/client/qwaylandcursor_p.h
|
||||
+++ b/src/client/qwaylandcursor_p.h
|
||||
@@ -75,7 +75,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandCursorTheme
|
||||
public:
|
||||
static QWaylandCursorTheme *create(QWaylandShm *shm, int size, const QString &themeName);
|
||||
~QWaylandCursorTheme();
|
||||
- ::wl_cursor_image *cursorImage(Qt::CursorShape shape, uint millisecondsIntoAnimation = 0);
|
||||
+ ::wl_cursor *cursor(Qt::CursorShape shape);
|
||||
|
||||
private:
|
||||
enum WaylandCursor {
|
||||
@@ -129,7 +129,6 @@ public:
|
||||
void setPos(const QPoint &pos) override;
|
||||
|
||||
static QSharedPointer<QWaylandBuffer> cursorBitmapBuffer(QWaylandDisplay *display, const QCursor *cursor);
|
||||
- struct wl_cursor_image *cursorImage(Qt::CursorShape shape);
|
||||
|
||||
private:
|
||||
QWaylandDisplay *mDisplay = nullptr;
|
||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||
index a4098edd..d812918e 100644
|
||||
--- a/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/src/client/qwaylandinputdevice.cpp
|
||||
@@ -283,8 +283,8 @@ void QWaylandInputDevice::Pointer::updateCursorTheme()
|
||||
if (!mCursor.theme)
|
||||
return; // A warning has already been printed in loadCursorTheme
|
||||
|
||||
- if (auto *arrow = mCursor.theme->cursorImage(Qt::ArrowCursor)) {
|
||||
- int arrowPixelSize = qMax(arrow->width, arrow->height); // Not all cursor themes are square
|
||||
+ if (auto *arrow = mCursor.theme->cursor(Qt::ArrowCursor)) {
|
||||
+ int arrowPixelSize = qMax(arrow->images[0]->width, arrow->images[0]->height); // Not all cursor themes are square
|
||||
while (scale > 1 && arrowPixelSize / scale < cursorSize())
|
||||
--scale;
|
||||
} else {
|
||||
@@ -326,12 +326,20 @@ void QWaylandInputDevice::Pointer::updateCursor()
|
||||
|
||||
// Set from shape using theme
|
||||
uint time = seat()->mCursor.animationTimer.elapsed();
|
||||
- if (struct ::wl_cursor_image *image = mCursor.theme->cursorImage(shape, time)) {
|
||||
+
|
||||
+ if (struct ::wl_cursor *waylandCursor = mCursor.theme->cursor(shape)) {
|
||||
+ int frame = wl_cursor_frame(waylandCursor, time);
|
||||
+ ::wl_cursor_image *image = waylandCursor->images[frame];
|
||||
+
|
||||
struct wl_buffer *buffer = wl_cursor_image_get_buffer(image);
|
||||
+ if (!buffer) {
|
||||
+ qCWarning(lcQpaWayland) << "Could not find buffer for cursor" << shape;
|
||||
+ return;
|
||||
+ }
|
||||
int bufferScale = mCursor.themeBufferScale;
|
||||
QPoint hotspot = QPoint(image->hotspot_x, image->hotspot_y) / bufferScale;
|
||||
QSize size = QSize(image->width, image->height) / bufferScale;
|
||||
- bool animated = image->delay > 0;
|
||||
+ bool animated = waylandCursor->image_count > 1 && image->delay > 0;
|
||||
getOrCreateCursorSurface()->update(buffer, hotspot, size, bufferScale, animated);
|
||||
return;
|
||||
}
|
||||
--
|
||||
2.23.0
|
||||
|
@ -1,93 +0,0 @@
|
||||
From 20ddfe8dffc3be253d799bc3f939a1b0e388ed73 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Sun, 23 Jun 2019 15:09:51 +0200
|
||||
Subject: [PATCH 3/5] Client: Don't send fake SurfaceCreated/Destroyed events
|
||||
|
||||
QPlatformSurface relates to the backing store. Not the wl_surface.
|
||||
They are emitted by QPlatformWindow.
|
||||
|
||||
Due to a previously incorrect usage by KDE developers it was faked to
|
||||
emit the events when the wl_surface is created/hidden to keep behavior.
|
||||
|
||||
With QtBase a9246c7132a2c8864d3ae6cebd260bb9ee711fcb this now causes an
|
||||
issue as now QWidgets react to this event in a breaking way.
|
||||
|
||||
Change-Id: I2f003bc9da85f032a0053677fd281152099fc9eb
|
||||
---
|
||||
.../custom-extension/client-common/customextension.cpp | 9 +++++++--
|
||||
src/client/qwaylandwindow.cpp | 10 ++--------
|
||||
src/client/qwaylandwindow_p.h | 2 +-
|
||||
3 files changed, 10 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/examples/wayland/custom-extension/client-common/customextension.cpp b/examples/wayland/custom-extension/client-common/customextension.cpp
|
||||
index aa0cb58a..16f18fd7 100644
|
||||
--- a/examples/wayland/custom-extension/client-common/customextension.cpp
|
||||
+++ b/examples/wayland/custom-extension/client-common/customextension.cpp
|
||||
@@ -81,8 +81,13 @@ QWindow *CustomExtension::windowForSurface(struct ::wl_surface *surface)
|
||||
|
||||
bool CustomExtension::eventFilter(QObject *object, QEvent *event)
|
||||
{
|
||||
- if (event->type() == QEvent::PlatformSurface
|
||||
- && static_cast<QPlatformSurfaceEvent*>(event)->surfaceEventType() == QPlatformSurfaceEvent::SurfaceCreated) {
|
||||
+ if (event->type() == QEvent::Expose) {
|
||||
+ auto ee = static_cast<QExposeEvent*>(event);
|
||||
+
|
||||
+ if ((ee->region().isNull())) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
QWindow *window = qobject_cast<QWindow*>(object);
|
||||
Q_ASSERT(window);
|
||||
window->removeEventFilter(this);
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 7fca9783..76975b27 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -91,7 +91,7 @@ QWaylandWindow::~QWaylandWindow()
|
||||
delete mWindowDecoration;
|
||||
|
||||
if (isInitialized())
|
||||
- reset(false);
|
||||
+ reset();
|
||||
|
||||
const QWindow *parent = window();
|
||||
foreach (QWindow *w, QGuiApplication::topLevelWindows()) {
|
||||
@@ -117,8 +117,6 @@ void QWaylandWindow::initWindow()
|
||||
|
||||
if (!isInitialized()) {
|
||||
initializeWlSurface();
|
||||
- QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceCreated);
|
||||
- QGuiApplication::sendEvent(window(), &e);
|
||||
}
|
||||
|
||||
if (shouldCreateSubSurface()) {
|
||||
@@ -224,12 +222,8 @@ bool QWaylandWindow::shouldCreateSubSurface() const
|
||||
return QPlatformWindow::parent() != nullptr;
|
||||
}
|
||||
|
||||
-void QWaylandWindow::reset(bool sendDestroyEvent)
|
||||
+void QWaylandWindow::reset()
|
||||
{
|
||||
- if (isInitialized() && sendDestroyEvent) {
|
||||
- QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed);
|
||||
- QGuiApplication::sendEvent(window(), &e);
|
||||
- }
|
||||
delete mShellSurface;
|
||||
mShellSurface = nullptr;
|
||||
delete mSubSurfaceWindow;
|
||||
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||
index 86139243..fe24224f 100644
|
||||
--- a/src/client/qwaylandwindow_p.h
|
||||
+++ b/src/client/qwaylandwindow_p.h
|
||||
@@ -261,7 +261,7 @@ private:
|
||||
void initializeWlSurface();
|
||||
bool shouldCreateShellSurface() const;
|
||||
bool shouldCreateSubSurface() const;
|
||||
- void reset(bool sendDestroyEvent = true);
|
||||
+ void reset();
|
||||
void sendExposeEvent(const QRect &rect);
|
||||
static void closePopups(QWaylandWindow *parent);
|
||||
QWaylandScreen *calculateScreenFromSurfaceEvents() const;
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,80 +0,0 @@
|
||||
From 71a854f4eced28282df72e1b25888929799e8ee7 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Sun, 23 Jun 2019 14:48:30 +0200
|
||||
Subject: [PATCH 4/5] Client: Make handleUpdate aware of exposure changes
|
||||
|
||||
The wl_surface can be destroyed whilst a render is happening. Calling
|
||||
wl_surface::frame after the window is reset can crash as wl_surface is
|
||||
null.
|
||||
|
||||
Change-Id: I139a9b234cb6acba81d6c1d5fa58629904a25053
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 8 ++++++++
|
||||
src/client/qwaylandwindow_p.h | 4 ++++
|
||||
2 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 76975b27..c6723aa7 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -72,6 +72,8 @@ Q_LOGGING_CATEGORY(lcWaylandBackingstore, "qt.qpa.wayland.backingstore")
|
||||
|
||||
QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
||||
|
||||
+QReadWriteLock mSurfaceLock;
|
||||
+
|
||||
QWaylandWindow::QWaylandWindow(QWindow *window)
|
||||
: QPlatformWindow(window)
|
||||
, mDisplay(waylandScreen()->display())
|
||||
@@ -197,6 +199,7 @@ void QWaylandWindow::initWindow()
|
||||
|
||||
void QWaylandWindow::initializeWlSurface()
|
||||
{
|
||||
+ QWriteLocker lock(&mSurfaceLock);
|
||||
init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this)));
|
||||
}
|
||||
|
||||
@@ -230,6 +233,7 @@ void QWaylandWindow::reset()
|
||||
mSubSurfaceWindow = nullptr;
|
||||
if (isInitialized()) {
|
||||
emit wlSurfaceDestroyed();
|
||||
+ QWriteLocker lock(&mSurfaceLock);
|
||||
destroy();
|
||||
}
|
||||
mScreens.clear();
|
||||
@@ -1142,6 +1146,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 fe24224f..97884ba4 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>
|
||||
@@ -277,6 +279,8 @@ private:
|
||||
static QMutex mFrameSyncMutex;
|
||||
static QWaylandWindow *mMouseGrab;
|
||||
|
||||
+ QReadWriteLock mSurfaceLock;
|
||||
+
|
||||
friend class QWaylandSubSurface;
|
||||
};
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
14
fix-return-nonvoid-function.patch
Normal file
14
fix-return-nonvoid-function.patch
Normal file
@ -0,0 +1,14 @@
|
||||
Index: qtwayland-everywhere-src-5.14.0-alpha/src/client/qwaylandinputdevice.cpp
|
||||
===================================================================
|
||||
--- qtwayland-everywhere-src-5.14.0-alpha.orig/src/client/qwaylandinputdevice.cpp
|
||||
+++ qtwayland-everywhere-src-5.14.0-alpha/src/client/qwaylandinputdevice.cpp
|
||||
@@ -968,6 +968,9 @@ bool QWaylandInputDevice::Pointer::Frame
|
||||
case axis_source_finger:
|
||||
case axis_source_continuous:
|
||||
return !delta.isNull();
|
||||
+ default:
|
||||
+ Q_UNREACHABLE();
|
||||
+ return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,73 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 22 22:52:51 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Remove unneeded parentheses in License tag
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 16 09:42:21 UTC 2019 - Christophe Giboudeaux <christophe@krop.fr>
|
||||
|
||||
- Update the license tags.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 12 12:55:17 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0:
|
||||
* New bugfix release
|
||||
* For the changes between 5.13.2 and 5.14.0 please see:
|
||||
https://code.qt.io/cgit/qt/qtwayland.git/tree/dist/changes-5.14.0?h=v5.14.0
|
||||
* For the changes between 5.13.1 and 5.13.2 please see:
|
||||
https://code.qt.io/cgit/qt/qtwayland.git/tree/dist/changes-5.13.2?h=v5.14.0
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 4 14:38:13 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0-rc:
|
||||
* New bugfix release
|
||||
* No changelog available
|
||||
* For more details please see:
|
||||
* For more details about Qt 5.14 please see:
|
||||
https://wiki.qt.io/New_Features_in_Qt_5.14
|
||||
- Add patch to address performance regression (kde#412924):
|
||||
* 0001-Avoid-animating-single-frame-cursors.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 12 13:03:32 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0-beta3:
|
||||
* New bugfix release
|
||||
* No changelog available
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 24 13:23:10 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0-beta2:
|
||||
* New bugfix release
|
||||
* No changelog available
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 15 12:34:55 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0-beta1:
|
||||
* New bugfix release
|
||||
* No changelog available
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 30 13:30:40 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 5.14.0-alpha:
|
||||
* New feature release
|
||||
* No changelog available
|
||||
* For more details about Qt 5.14 please see:
|
||||
https://wiki.qt.io/New_Features_in_Qt_5.14
|
||||
- Drop patch, cause of the regression was reverted in qtbase:
|
||||
* 0003-Client-Don-t-send-fake-SurfaceCreated-Destroyed-even.patch
|
||||
- Drop patch, now upstream:
|
||||
* 0004-Client-Make-handleUpdate-aware-of-exposure-changes.patch
|
||||
- Drop patch, it's (hopefully) no longer necessary:
|
||||
* workaround-null-object.patch
|
||||
- Add patch to fix build:
|
||||
* fix-return-nonvoid-function.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 6 08:04:41 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libqt5-qtwayland
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2019 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -12,40 +12,35 @@
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define qt5_snapshot 0
|
||||
%define libname libQt5WaylandCompositor5
|
||||
%define base_name libqt5
|
||||
%define real_version 5.13.1
|
||||
%define so_version 5.13.1
|
||||
%define tar_version qtwayland-everywhere-src-5.13.1
|
||||
%define real_version 5.14.0
|
||||
%define so_version 5.14.0
|
||||
%define tar_version qtwayland-everywhere-src-5.14.0
|
||||
Name: libqt5-qtwayland
|
||||
Version: 5.13.1
|
||||
Version: 5.14.0
|
||||
Release: 0
|
||||
Summary: Qt 5 Wayland Addon
|
||||
License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-only
|
||||
# The wayland compositor files are GPL-3.0-or-later
|
||||
License: GPL-3.0-or-later AND (LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-or-later)
|
||||
Group: Development/Libraries/X11
|
||||
Url: https://www.qt.io
|
||||
Source: https://download.qt.io/official_releases/qt/5.13/%{real_version}/submodules/%{tar_version}.tar.xz
|
||||
URL: https://www.qt.io
|
||||
Source: https://download.qt.io/official_releases/qt/5.14/%{real_version}/submodules/%{tar_version}.tar.xz
|
||||
Source1: baselibs.conf
|
||||
# Those aren't merged upstream yet
|
||||
# https://codereview.qt-project.org/c/qt/qtwayland/+/265999
|
||||
Patch3: 0003-Client-Don-t-send-fake-SurfaceCreated-Destroyed-even.patch
|
||||
# https://codereview.qt-project.org/c/qt/qtwayland/+/265998
|
||||
Patch4: 0004-Client-Make-handleUpdate-aware-of-exposure-changes.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 0001-Avoid-animating-single-frame-cursors.patch
|
||||
# PATCH-FIX-OPENSUSE
|
||||
Patch100: workaround-null-object.patch
|
||||
Patch100: fix-return-nonvoid-function.patch
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: libqt5-qtbase-private-headers-devel >= %{version}
|
||||
BuildRequires: libqt5-qtdeclarative-private-headers-devel >= %{version}
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: xz
|
||||
%if 0%{?suse_version} < 1330
|
||||
# It does not build with the default compiler (GCC 4.8) on Leap 42.x
|
||||
BuildRequires: gcc7-c++
|
||||
%endif
|
||||
BuildRequires: pkgconfig(egl)
|
||||
BuildRequires: pkgconfig(wayland-client) >= 1.1.0
|
||||
BuildRequires: pkgconfig(wayland-egl)
|
||||
@ -53,6 +48,10 @@ BuildRequires: pkgconfig(wayland-server) >= 1.1.0
|
||||
BuildRequires: pkgconfig(xcomposite)
|
||||
BuildRequires: pkgconfig(xkbcommon) >= 0.2.0
|
||||
Conflicts: qtwayland
|
||||
%if 0%{?suse_version} < 1330
|
||||
# It does not build with the default compiler (GCC 4.8) on Leap 42.x
|
||||
BuildRequires: gcc7-c++
|
||||
%endif
|
||||
%if %{qt5_snapshot}
|
||||
#to create the forwarding headers
|
||||
BuildRequires: perl
|
||||
@ -75,9 +74,9 @@ Development package to build Qt-based compositors.
|
||||
%package private-headers-devel
|
||||
Summary: Qt 5 Wayland Addon Non-ABI stable experimental API files
|
||||
Group: Development/Libraries/C and C++
|
||||
BuildArch: noarch
|
||||
Requires: %{name}-devel = %{version}
|
||||
Requires: libqt5-qtbase-private-headers-devel
|
||||
BuildArch: noarch
|
||||
|
||||
%description private-headers-devel
|
||||
This package provides private headers of libqt5-qtwayland that are normally
|
||||
@ -104,6 +103,7 @@ Qt is a set of libraries for developing applications.
|
||||
%package examples
|
||||
Summary: Qt5 wayland examples
|
||||
Group: Development/Libraries/X11
|
||||
License: BSD-3-Clause
|
||||
Recommends: %{name}-devel
|
||||
|
||||
%description examples
|
||||
@ -113,15 +113,10 @@ Examples for libqt5-qtwayland module.
|
||||
%autosetup -p1 -n %{tar_version}
|
||||
|
||||
%post -n libQt5WaylandCompositor5 -p /sbin/ldconfig
|
||||
|
||||
%postun -n libQt5WaylandCompositor5 -p /sbin/ldconfig
|
||||
|
||||
%post -n libQt5WaylandClient5 -p /sbin/ldconfig
|
||||
|
||||
%postun -n libQt5WaylandClient5 -p /sbin/ldconfig
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%build
|
||||
@ -140,10 +135,10 @@ mkdir .git
|
||||
export CXX=g++-7
|
||||
%endif
|
||||
|
||||
%{make_jobs}
|
||||
%make_jobs
|
||||
|
||||
%install
|
||||
%{qmake5_install}
|
||||
%qmake5_install
|
||||
|
||||
find %{buildroot}%{_libdir} -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
|
||||
find %{buildroot}%{_libdir}/pkgconfig -type f -name '*pc' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
|
||||
@ -153,25 +148,21 @@ rm -f %{buildroot}%{_libqt5_libdir}/lib*.la
|
||||
fdupes -s %{buildroot}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_bindir}/qtwaylandscanner
|
||||
%{_libqt5_plugindir}/
|
||||
%{_libqt5_archdatadir}/qml/QtWayland/
|
||||
|
||||
%files -n libQt5WaylandCompositor5
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_libdir}/libQt5WaylandCompositor.so.*
|
||||
|
||||
%files -n libQt5WaylandClient5
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_libdir}/libQt5WaylandClient.so.*
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_libdir}/*.prl
|
||||
%{_libqt5_libdir}/*.so
|
||||
%{_libqt5_libdir}/pkgconfig/*
|
||||
@ -181,13 +172,11 @@ fdupes -s %{buildroot}
|
||||
%{_libqt5_includedir}/Qt*
|
||||
|
||||
%files private-headers-devel
|
||||
%defattr(-,root,root,755)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_includedir}/Qt*/%{so_version}
|
||||
|
||||
%files examples
|
||||
%defattr(-,root,root,755)
|
||||
%doc LICENSE.*
|
||||
%license LICENSE.*
|
||||
%{_libqt5_examplesdir}/
|
||||
|
||||
%changelog
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:def836f365b8af99cc693625f2079a54a0f71f5eff3f370dcf6f30b8944caf77
|
||||
size 478744
|
3
qtwayland-everywhere-src-5.14.0.tar.xz
Normal file
3
qtwayland-everywhere-src-5.14.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:32d4fadb3a8dcee8953e6d92ee567927cd7649be6fc8dd378480664902c22610
|
||||
size 544292
|
@ -1,21 +0,0 @@
|
||||
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||
Subject: Work around crash in QtWaylandClient::QWaylandEglWindow::updateSurface
|
||||
References: kde#381630
|
||||
|
||||
object() is nullptr when it crashes, so do not try to reference it.
|
||||
This is only a workaround as object() should never be nullptr AFAICT.
|
||||
So far I haven't discovered any bad side effects.
|
||||
|
||||
Index: qtwayland-opensource-src-5.9.1/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
===================================================================
|
||||
--- qtwayland-opensource-src-5.9.1.orig/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
+++ qtwayland-opensource-src-5.9.1/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
@@ -112,7 +112,7 @@ void QWaylandEglWindow::updateSurface(bo
|
||||
// mesa's egl returns NULL if we try to create a, invalid wl_egl_window, however not all EGL
|
||||
// implementations may do that, so check the size ourself. Besides, we must deal with resizing
|
||||
// a valid window to 0x0, which would make it invalid. Hence, destroy it.
|
||||
- if (sizeWithMargins.isEmpty()) {
|
||||
+ if (sizeWithMargins.isEmpty() || !object()) {
|
||||
if (m_eglSurface) {
|
||||
eglDestroySurface(m_clientBufferIntegration->eglDisplay(), m_eglSurface);
|
||||
m_eglSurface = 0;
|
Loading…
Reference in New Issue
Block a user