Bug#1110707: trixie-pu: package libreoffice/4:25.2.3-2+deb13u2
Hi,
Am 13.08.25 um 22:10 schrieb Rene Engelhard:
New debdiff compared to +deb13u1 [...] will follow
Attached.
Regards,
Rene
diff -Nru libreoffice-25.2.3/debian/changelog libreoffice-25.2.3/debian/changelog
--- libreoffice-25.2.3/debian/changelog 2025-08-13 17:35:20.000000000 +0200
+++ libreoffice-25.2.3/debian/changelog 2025-08-13 22:27:02.000000000 +0200
@@ -1,3 +1,18 @@
+libreoffice (4:25.2.3-2+deb13u2) trixie; urgency=medium
+
+ * debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff: add
+ back
+ * debian/patches/qt-Consolidate-to-one-toOUString-helper.diff: add from
+ upstream; fixes --enable-qt6 builds with the above
+
+ * debian/rules:
+ - remove USE_GSTREAMER=n setting on build-indep since it somehow also
+ affects the AVMEDIA conditional which makes build-indep builds loose
+ the gallery sound files (closes: #1108832), and move the gstreamer -dev
+ packages from B-D-A to B-D consequently
+
+ -- Rene Engelhard <rene@debian.org> Wed, 13 Aug 2025 22:27:02 +0200
+
libreoffice (4:25.2.3-2+deb13u1) trixie; urgency=medium
* debian/patches/add-EUR-for-Bulgaria-Lew.diff: add Euro support for
diff -Nru libreoffice-25.2.3/debian/control libreoffice-25.2.3/debian/control
--- libreoffice-25.2.3/debian/control 2025-08-13 17:35:20.000000000 +0200
+++ libreoffice-25.2.3/debian/control 2025-08-13 22:27:02.000000000 +0200
@@ -72,6 +72,8 @@
libglib2.0-dev,
libglm-dev,
libgraphite2-dev,
+ libgstreamer-plugins-base1.0-dev,
+ libgstreamer1.0-dev,
libharfbuzz-dev (>= 5.1.0),
libhsqldb1.8.0-java [!armel !armhf !hppa !kfreebsd-amd64 !kfreebsd-i386 !mips64 !powerpcspe !ppc64el !s390x !sparc] <!nojava>,
libhunspell-dev,
@@ -200,8 +202,6 @@
libgpg-error-dev,
libgpgme-dev,
libgpgmepp-dev,
- libgstreamer-plugins-base1.0-dev,
- libgstreamer1.0-dev,
libgtk-3-dev,
libgtk-4-dev (>= 4.10),
libkf6config-dev,
diff -Nru libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff
--- libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff 1970-01-01 01:00:00.000000000 +0100
+++ libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff 2025-08-13 22:17:20.000000000 +0200
@@ -0,0 +1,165 @@
+From 4bda0a68ef81a3f3eb5233b35ea046aca5352c88 Mon Sep 17 00:00:00 2001
+From: Michael Weghorn <m.weghorn@posteo.de>
+Date: Fri, 2 May 2025 17:52:19 +0200
+Subject: tdf#166055 avmedia qt: Use GStreamer frame grabber by default
+
+As described in tdf#166055, QtFrameGrabber currently
+still causes issues (freezes or crashes).
+
+The QtMultimedia API does not provide a simple
+way to synchronously retrieve a video frame, so
+the current approach is to connect to the
+QVideoSink::videoFrameChanged signal and start
+playing the video until the first frame arrives.
+
+There are various QtMultimedia plugins/backends
+(at least GStreamer and ffmpeg for Linux). Some
+use multiple threads internally. Some logic
+needs to be run in the main thread however, so
+it's not possible to move things to a separate
+thread/event loop to decouple it from the main
+thread.
+As a consequence, there is a need to trigger
+event processing while waiting for the frame,
+as QVideoSink::videoFrameChanged would otherwise
+never be called.
+
+Triggering event processing can have bad side-effects
+however, as seen in tdf#166055, e.g. leading to
+endless recursion or crashes when processing LO events.
+
+See also
+
+ commit 697405b533a8ae5b6a8f5bd184b9344a96f71c69
+ Author: Michael Weghorn <m.weghorn@posteo.de>
+ Date: Wed Apr 9 09:42:45 2025 +0200
+
+ tdf#166055 qt avmedia: Provide media/player size right away
+
+for more background and some thoughts.
+
+For now, avoid the problem by using
+the GStreamer based frame grabber even with
+QtPlayer by default.
+
+This means that the QtMultimedia
+framework is still used for video playback with the
+qt6 VCL plugin, where LO's GStreamer implementation
+doesn't work properly, see
+
+ commit 441d8ed9be0e7f831b455a69b8688dcb79a8bc00
+ Author: Michael Weghorn <m.weghorn@posteo.de>
+ Date: Mon May 20 16:25:09 2024 +0200
+
+ tdf#145735 avmedia qt: Use QtMultimedia for Qt 6 media playback
+
+. However, in order to preview images (that are e.g. shown
+in Impress when not in presentation mode) the LO GStreamer
+backend is used now.
+(That works fine, no UI interaction is needed
+for that.)
+
+Adjust QtPlayer::createFrameGrabber accordingly
+to return the LO default platform player/frame grabber
+implementation (which is the GStreamer one on Linux), see also
+MediaWindowImpl::createPlayer. Use the service to
+avoid having to link GStreamer libraries.
+
+However, allow to force the use of QtFrameGrabber
+by setting environment variable
+SAL_VCL_QT_USE_QT_FRAME_GRABBER.
+
+Change-Id: Ibe5c42adf6e8f699f33e5f089bd2f6076c3de4f7
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184912
+Tested-by: Jenkins
+Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
+(cherry picked from commit 08533ca4e2526644b803c40c0c3d3c96f43762af)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184918
+Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
+---
+ avmedia/source/qt6/QtPlayer.cxx | 51 +++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 49 insertions(+), 2 deletions(-)
+
+diff --git a/avmedia/source/qt6/QtPlayer.cxx b/avmedia/source/qt6/QtPlayer.cxx
+index 1be226b248dd..dc0dea9fb05a 100644
+--- a/avmedia/source/qt6/QtPlayer.cxx
++++ b/avmedia/source/qt6/QtPlayer.cxx
+@@ -17,6 +17,9 @@
+ #include <QtWidgets/QLabel>
+ #include <QtWidgets/QLayout>
+
++#include <com/sun/star/media/XManager.hpp>
++#include <com/sun/star/uno/XComponentContext.hpp>
++#include <comphelper/processfactory.hxx>
+ #include <cppuhelper/supportsservice.hxx>
+ #include <sal/log.hxx>
+ #include <rtl/string.hxx>
+@@ -30,6 +33,7 @@
+ #include <vcl/timer.hxx>
+
+ #include <gstwindow.hxx>
++#include <mediamisc.hxx>
+ #include "QtFrameGrabber.hxx"
+ #include "QtPlayer.hxx"
+
+@@ -245,12 +249,55 @@ uno::Reference<::media::XPlayerWindow>
+ return xRet;
+ }
+
++namespace
++{
++// see also MediaWindowImpl::createPlayer
++uno::Reference<media::XFrameGrabber> createPlatformFrameGrabber(const OUString& rUrl)
++{
++ const uno::Reference<uno::XComponentContext>& xContext
++ = comphelper::getProcessComponentContext();
++ try
++ {
++ uno::Reference<css::media::XManager> xManager(
++ xContext->getServiceManager()->createInstanceWithContext(AVMEDIA_MANAGER_SERVICE_NAME,
++ xContext),
++ uno::UNO_QUERY);
++ if (!xManager.is())
++ return nullptr;
++
++ uno::Reference<media::XPlayer> xPlayer = xManager->createPlayer(rUrl);
++ if (!xPlayer.is())
++ return nullptr;
++
++ return xPlayer->createFrameGrabber();
++ }
++ catch (const uno::Exception&)
++ {
++ SAL_WARN("avmedia", "Exception in createPlatformFrameGrabber");
++ }
++
++ return nullptr;
++}
++}
++
+ uno::Reference<media::XFrameGrabber> SAL_CALL QtPlayer::createFrameGrabber()
+ {
+ osl::MutexGuard aGuard(m_aMutex);
+
+- rtl::Reference<QtFrameGrabber> xFrameGrabber = new QtFrameGrabber(m_xMediaPlayer->source());
+- return xFrameGrabber;
++ // use the default platform frame grabber (GStreamer on Linux) by default
++ // instead of using QtFrameGrabber for now unless overriden by env variable,
++ // as QtFrameGrabber has issues (see e.g. tdf#166055)
++ static const bool bPreferQtFrameGrabber
++ = (getenv("SAL_VCL_QT_USE_QT_FRAME_GRABBER") != nullptr);
++ if (!bPreferQtFrameGrabber)
++ {
++ uno::Reference<media::XFrameGrabber> xFrameGrabber
++ = createPlatformFrameGrabber(toOUString(m_xMediaPlayer->source().url()));
++ if (xFrameGrabber.is())
++ return xFrameGrabber;
++ }
++
++ return new QtFrameGrabber(m_xMediaPlayer->source());
+ }
+
+ OUString SAL_CALL QtPlayer::getImplementationName()
+--
+cgit v1.2.3
+
diff -Nru libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff
--- libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff 1970-01-01 01:00:00.000000000 +0100
+++ libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff 2025-08-13 22:27:02.000000000 +0200
@@ -0,0 +1,90 @@
+From 30c0c6cc92df8f86d8b6fdf9143b46f77befc92f Mon Sep 17 00:00:00 2001
+From: Michael Weghorn <m.weghorn@posteo.de>
+Date: Fri, 11 Apr 2025 17:19:20 +0200
+Subject: [PATCH] qt: Consolidate to one toOUString helper
+
+Instead of having one for vcl in vcl/inc/qt5/QtTools.hxx
+and one in avmedia/source/qt6/QtFrameGrabber.cxx,
+move the existing implementation to
+include/vcl/qt/QtUtils.hxx and use it everywhere.
+
+Change-Id: I8576ab0fe2fd12bb25ae262e59acb8412ef8be0c
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184057
+Tested-by: Jenkins
+Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
+(cherry picked from commit d023035acf83ee1b61dfc03333bfc6e612bb58f6)
+---
+ avmedia/source/qt6/QtFrameGrabber.cxx | 6 +-----
+ include/vcl/qt/QtUtils.hxx | 6 ++++++
+ vcl/inc/qt5/QtTools.hxx | 7 +------
+ 3 files changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/avmedia/source/qt6/QtFrameGrabber.cxx b/avmedia/source/qt6/QtFrameGrabber.cxx
+index a9cf99fadc7f..b82b02005d9a 100644
+--- a/avmedia/source/qt6/QtFrameGrabber.cxx
++++ b/avmedia/source/qt6/QtFrameGrabber.cxx
+@@ -14,6 +14,7 @@
+ #include <vcl/filter/PngImageReader.hxx>
+ #include <vcl/graph.hxx>
+ #include <vcl/image.hxx>
++#include <vcl/qt/QtUtils.hxx>
+ #include <vcl/scheduler.hxx>
+
+ #include "QtFrameGrabber.hxx"
+@@ -23,11 +24,6 @@ using namespace ::com::sun::star;
+
+ namespace
+ {
+-inline OUString toOUString(const QString& s)
+-{
+- return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length());
+-}
+-
+ uno::Reference<css::graphic::XGraphic> toXGraphic(const QImage& rImage)
+ {
+ QByteArray aData;
+diff --git a/include/vcl/qt/QtUtils.hxx b/include/vcl/qt/QtUtils.hxx
+index 87f21d96315c..3ab5f19f02cb 100644
+--- a/include/vcl/qt/QtUtils.hxx
++++ b/include/vcl/qt/QtUtils.hxx
+@@ -31,6 +31,12 @@ inline QString toQString(const OUString& rStr)
+ return QString::fromUtf16(rStr.getStr(), rStr.getLength());
+ }
+
++inline OUString toOUString(const QString& s)
++{
++ // QString stores UTF16, just like OUString
++ return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length());
++}
++
+ inline QPixmap toQPixmap(const BitmapEx& rBitmapEx)
+ {
+ SvMemoryStream aMemoryStream;
+diff --git a/vcl/inc/qt5/QtTools.hxx b/vcl/inc/qt5/QtTools.hxx
+index c1b2b75fff5f..b090ba3718c8 100644
+--- a/vcl/inc/qt5/QtTools.hxx
++++ b/vcl/inc/qt5/QtTools.hxx
+@@ -33,6 +33,7 @@
+ #include <tools/color.hxx>
+ #include <tools/gen.hxx>
+ #include <vcl/bitmap/BitmapTypes.hxx>
++#include <vcl/qt/QtUtils.hxx>
+ #include <vcl/vclenum.hxx>
+
+ #include <com/sun/star/uno/Sequence.hxx>
+@@ -43,12 +44,6 @@
+ class Image;
+ class QImage;
+
+-inline OUString toOUString(const QString& s)
+-{
+- // QString stores UTF16, just like OUString
+- return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length());
+-}
+-
+ inline QRect toQRect(const tools::Rectangle& rRect)
+ {
+ return QRect(rRect.Left(), rRect.Top(), rRect.GetWidth(), rRect.GetHeight());
+--
+2.47.2
+
diff -Nru libreoffice-25.2.3/debian/patches/series libreoffice-25.2.3/debian/patches/series
--- libreoffice-25.2.3/debian/patches/series 2025-08-13 17:35:20.000000000 +0200
+++ libreoffice-25.2.3/debian/patches/series 2025-08-13 22:27:02.000000000 +0200
@@ -52,3 +52,5 @@
disable-uitest-xmlsecurity-gpg.diff
system-colamd.diff
add-EUR-for-Bulgaria-Lew.diff
+avmedia-qt-use-gstreamer-frame-grabber-by-default.diff
+qt-Consolidate-to-one-toOUString-helper.diff
diff -Nru libreoffice-25.2.3/debian/rules libreoffice-25.2.3/debian/rules
--- libreoffice-25.2.3/debian/rules 2025-08-13 17:35:20.000000000 +0200
+++ libreoffice-25.2.3/debian/rules 2025-08-13 22:27:02.000000000 +0200
@@ -514,7 +514,6 @@
ENABLE_SKIA=n
ENABLE_COINMP=n
ENABLE_LPSOLVE=n
-USE_GSTREAMER=n
ENABLE_LDAP=n
ENABLE_PDFIUM=n
USE_DBUS=n
@@ -1839,9 +1838,9 @@
endif
ifeq "$(USE_GSTREAMER)" "y"
- BUILD_DEPS_ARCH += , libgstreamer1.0-dev
+ BUILD_DEPS += , libgstreamer1.0-dev
CONFIGURE_FLAGS += --enable-gstreamer-1-0
- BUILD_DEPS_ARCH += , libgstreamer-plugins-base1.0-dev
+ BUILD_DEPS += , libgstreamer-plugins-base1.0-dev
GSTREAMER_PLUGINS_SUGGESTS += , gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-ugly, gstreamer1.0-plugins-bad, gstreamer1.0-libav
else
CONFIGURE_FLAGS += --disable-gstreamer-1-0
Reply to: