Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libqt5-qtmultimedia for openSUSE:Factory checked in at 2025-05-30 14:21:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt5-qtmultimedia (Old) and /work/SRC/openSUSE:Factory/.libqt5-qtmultimedia.new.25440 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtmultimedia" Fri May 30 14:21:01 2025 rev:66 rq:1280912 version:5.15.17+kde2 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt5-qtmultimedia/libqt5-qtmultimedia.changes 2024-11-27 22:05:48.886599002 +0100 +++ /work/SRC/openSUSE:Factory/.libqt5-qtmultimedia.new.25440/libqt5-qtmultimedia.changes 2025-05-30 17:23:00.821500794 +0200 @@ -1,0 +2,8 @@ +Wed May 28 08:35:21 UTC 2025 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to version 5.15.17+kde2, rebased upstream: + * qmake: Don't add audiocapture directory twice when targeting QNX + * Fix device file contention when setting parameters on v4l cameras + * Bump version to 5.15.17 + +------------------------------------------------------------------- Old: ---- qtmultimedia-everywhere-src-5.15.16+kde2.obscpio New: ---- qtmultimedia-everywhere-src-5.15.17+kde2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt5-qtmultimedia.spec ++++++ --- /var/tmp/diff_new_pack.zJtEaY/_old 2025-05-30 17:23:02.013550848 +0200 +++ /var/tmp/diff_new_pack.zJtEaY/_new 2025-05-30 17:23:02.013550848 +0200 @@ -28,11 +28,11 @@ %define gles 0 %endif %define base_name libqt5 -%define real_version 5.15.16 -%define so_version 5.15.16 +%define real_version 5.15.17 +%define so_version 5.15.17 %define tar_version qtmultimedia-everywhere-src-%{version} Name: libqt5-qtmultimedia -Version: 5.15.16+kde2 +Version: 5.15.17+kde2 Release: 0 Summary: Qt 5 Multimedia Library License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) ++++++ _service ++++++ --- /var/tmp/diff_new_pack.zJtEaY/_old 2025-05-30 17:23:02.053552527 +0200 +++ /var/tmp/diff_new_pack.zJtEaY/_new 2025-05-30 17:23:02.053552527 +0200 @@ -1,12 +1,12 @@ <services> <service name="obs_scm" mode="disabled"> <param name="changesgenerate">enable</param> - <param name="versionformat">5.15.16+kde@TAG_OFFSET@</param> + <param name="versionformat">5.15.17+kde@TAG_OFFSET@</param> <param name="url">https://invent.kde.org/qt/qt/qtmultimedia.git</param> <param name="scm">git</param> <param name="filename">qtmultimedia-everywhere-src</param> <param name="revision">kde/5.15</param> - <param name="parent-tag">v5.15.16-lts-lgpl</param> + <param name="parent-tag">v5.15.17-lts-lgpl</param> <param name="changesgenerate">enable</param> </service> <service name="set_version" mode="disabled"/> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.zJtEaY/_old 2025-05-30 17:23:02.077553535 +0200 +++ /var/tmp/diff_new_pack.zJtEaY/_new 2025-05-30 17:23:02.081553703 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://invent.kde.org/qt/qt/qtmultimedia.git</param> - <param name="changesrevision">b7c7ff4ab8c0f43a03de51a76867aae691411410</param></service></servicedata> + <param name="changesrevision">d342547886448dacf38d2933cd40322c7435ee86</param></service></servicedata> (No newline at EOF) ++++++ qtmultimedia-everywhere-src-5.15.16+kde2.obscpio -> qtmultimedia-everywhere-src-5.15.17+kde2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtmultimedia-everywhere-src-5.15.16+kde2/.qmake.conf new/qtmultimedia-everywhere-src-5.15.17+kde2/.qmake.conf --- old/qtmultimedia-everywhere-src-5.15.16+kde2/.qmake.conf 2024-11-18 12:37:41.000000000 +0100 +++ new/qtmultimedia-everywhere-src-5.15.17+kde2/.qmake.conf 2025-05-22 10:01:13.000000000 +0200 @@ -2,4 +2,4 @@ DEFINES += QT_NO_FOREACH QT_NO_JAVA_STYLE_ITERATORS QT_NO_LINKED_LIST -MODULE_VERSION = 5.15.16 +MODULE_VERSION = 5.15.17 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/gstreamer/camerabin/camerabinsession.h new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/gstreamer/camerabin/camerabinsession.h --- old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/gstreamer/camerabin/camerabinsession.h 2024-11-18 12:37:41.000000000 +0100 +++ new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/gstreamer/camerabin/camerabinsession.h 2025-05-22 10:01:13.000000000 +0200 @@ -99,6 +99,7 @@ #endif GstElement *cameraBin() { return m_camerabin; } GstElement *cameraSource() { return m_cameraSrc; } + GstElement *videoSource() { return m_videoSrc; } QGstreamerBusHelper *bus() { return m_busHelper; } QList< QPair<int,int> > supportedFrameRates(const QSize &frameSize, bool *continuous) const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/gstreamer/camerabin/camerabinv4limageprocessing.cpp new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/gstreamer/camerabin/camerabinv4limageprocessing.cpp --- old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/gstreamer/camerabin/camerabinv4limageprocessing.cpp 2024-11-18 12:37:41.000000000 +0100 +++ new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/gstreamer/camerabin/camerabinv4limageprocessing.cpp 2025-05-22 10:01:13.000000000 +0200 @@ -42,11 +42,53 @@ #include <QDebug> +#include <gst/gst.h> + #include <private/qcore_unix_p.h> #include <linux/videodev2.h> QT_BEGIN_NAMESPACE +class V4LDeviceResource { +public: + V4LDeviceResource(CameraBinSession *session, int flags) : m_fd(-1), m_needsClose(false) + { + if (!session) + return; + + // request fd from GstElement + if (session->videoSource()) + g_object_get(G_OBJECT(session->videoSource()), "device-fd", &m_fd, NULL); + + if (m_fd != -1) + return; + + // manually open resource if GstElement does not have it open + const QString deviceName = session->device(); + m_fd = qt_safe_open(deviceName.toLocal8Bit().constData(), flags); + + if (m_fd == -1) { + qWarning() << "Unable to open the camera" << deviceName + << ":" << qt_error_string(errno); + return; + } + + m_needsClose = true; + } + + ~V4LDeviceResource() + { + if (m_needsClose) + qt_safe_close(m_fd); + } + + int fd() const { return m_fd; } + +private: + int m_fd; + bool m_needsClose; +}; + CameraBinV4LImageProcessing::CameraBinV4LImageProcessing(CameraBinSession *session) : QCameraImageProcessingControl(session) , m_session(session) @@ -129,25 +171,24 @@ return QVariant(); } - const QString deviceName = m_session->device(); - const int fd = qt_safe_open(deviceName.toLocal8Bit().constData(), O_RDONLY); - if (fd == -1) { - qWarning() << "Unable to open the camera" << deviceName - << "for read to get the parameter value:" << qt_error_string(errno); - return QVariant(); - } - struct v4l2_control control; - ::memset(&control, 0, sizeof(control)); - control.id = (*sourceValueInfo).cid; + { + V4LDeviceResource resource(m_session, O_RDONLY); + if (resource.fd() == -1) { + qWarning("Unable to open device for get parameter value"); + return QVariant(); + } - const bool ret = (::ioctl(fd, VIDIOC_G_CTRL, &control) == 0); + ::memset(&control, 0, sizeof(control)); + control.id = (*sourceValueInfo).cid; - qt_safe_close(fd); + const bool ret = (::ioctl(resource.fd(), VIDIOC_G_CTRL, &control) == 0); - if (!ret) { - qWarning() << "Unable to get the parameter value:" << parameter << ":" << qt_error_string(errno); - return QVariant(); + if (!ret) { + qWarning() << "Unable to get the parameter value:" << parameter << ":" + << qt_error_string(errno); + return QVariant(); + } } switch (parameter) { @@ -184,11 +225,9 @@ return; } - const QString deviceName = m_session->device(); - const int fd = qt_safe_open(deviceName.toLocal8Bit().constData(), O_WRONLY); - if (fd == -1) { - qWarning() << "Unable to open the camera" << deviceName - << "for write to set the parameter value:" << qt_error_string(errno); + V4LDeviceResource resource(m_session, O_WRONLY); + if (resource.fd() == -1) { + qWarning() << "Unable to open device for set parameter value"; return; } @@ -203,7 +242,6 @@ value.value<QCameraImageProcessing::WhiteBalanceMode>(); if (m != QCameraImageProcessing::WhiteBalanceAuto && m != QCameraImageProcessing::WhiteBalanceManual) { - qt_safe_close(fd); return; } @@ -224,14 +262,11 @@ break; default: - qt_safe_close(fd); return; } - if (::ioctl(fd, VIDIOC_S_CTRL, &control) != 0) + if (::ioctl(resource.fd(), VIDIOC_S_CTRL, &control) != 0) qWarning() << "Unable to set the parameter value:" << parameter << ":" << qt_error_string(errno); - - qt_safe_close(fd); } void CameraBinV4LImageProcessing::updateParametersInfo( @@ -240,11 +275,9 @@ if (cameraStatus == QCamera::UnloadedStatus) m_parametersInfo.clear(); else if (cameraStatus == QCamera::LoadedStatus) { - const QString deviceName = m_session->device(); - const int fd = qt_safe_open(deviceName.toLocal8Bit().constData(), O_RDONLY); - if (fd == -1) { - qWarning() << "Unable to open the camera" << deviceName - << "for read to query the parameter info:" << qt_error_string(errno); + V4LDeviceResource resource(m_session, O_RDONLY); + if (resource.fd() == -1) { + qWarning() << "Unable to open device to query parameter info"; return; } @@ -265,7 +298,7 @@ ::memset(&queryControl, 0, sizeof(queryControl)); queryControl.id = supportedParametersEntries[i].cid; - if (::ioctl(fd, VIDIOC_QUERYCTRL, &queryControl) != 0) { + if (::ioctl(resource.fd(), VIDIOC_QUERYCTRL, &queryControl) != 0) { qWarning() << "Unable to query the parameter info:" << supportedParametersEntries[i].parameter << ":" << qt_error_string(errno); continue; @@ -279,8 +312,6 @@ m_parametersInfo.insert(supportedParametersEntries[i].parameter, sourceValueInfo); } - - qt_safe_close(fd); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/plugins.pro new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/plugins.pro --- old/qtmultimedia-everywhere-src-5.15.16+kde2/src/plugins/plugins.pro 2024-11-18 12:37:41.000000000 +0100 +++ new/qtmultimedia-everywhere-src-5.15.17+kde2/src/plugins/plugins.pro 2025-05-22 10:01:13.000000000 +0200 @@ -47,7 +47,7 @@ qtConfig(gstreamer): SUBDIRS += gstreamer unix:!mac:!android { - !qtConfig(gstreamer): SUBDIRS += audiocapture + !qtConfig(gstreamer):!qnx: SUBDIRS += audiocapture qtConfig(pulseaudio): SUBDIRS += pulseaudio qtConfig(alsa): SUBDIRS += alsa ++++++ qtmultimedia-everywhere-src.obsinfo ++++++ --- /var/tmp/diff_new_pack.zJtEaY/_old 2025-05-30 17:23:03.345606669 +0200 +++ /var/tmp/diff_new_pack.zJtEaY/_new 2025-05-30 17:23:03.345606669 +0200 @@ -1,5 +1,5 @@ name: qtmultimedia-everywhere-src -version: 5.15.16+kde2 -mtime: 1731929861 -commit: b7c7ff4ab8c0f43a03de51a76867aae691411410 +version: 5.15.17+kde2 +mtime: 1747900873 +commit: d342547886448dacf38d2933cd40322c7435ee86