Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mpvqt for openSUSE:Factory checked in at 2026-10-28 17:48:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mpvqt (Old) and /work/SRC/openSUSE:Factory/.mpvqt.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mpvqt" Wed Oct 28 17:48:31 2026 rev:5 rq:1393374 version:1.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/mpvqt/mpvqt.changes 2026-05-24 19:36:17.888859757 +0200 +++ /work/SRC/openSUSE:Factory/.mpvqt.new.2252680/mpvqt.changes 2026-10-28 17:48:36.004216167 +0100 @@ -1,0 +2,11 @@ +Tue Oct 27 15:43:50 UTC 2026 - Carsten Ziepke <[email protected]> + +- Update to 1.2.1 + * cmake: Drop obsolete FOUND_VAR arg to + find_package_handle_standard_args + * Drop obsolete FOUND_VAR arg to + find_package_handle_standard_args + * mpvcontroller, mpvrenderer: check for nullptrs and add + debug logs + +------------------------------------------------------------------- Old: ---- mpvqt-1.2.0.tar.xz mpvqt-1.2.0.tar.xz.sig New: ---- mpvqt-1.2.1.tar.xz mpvqt-1.2.1.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mpvqt.spec ++++++ --- /var/tmp/diff_new_pack.uNPuvH/_old 2026-10-28 17:48:36.937255199 +0100 +++ /var/tmp/diff_new_pack.uNPuvH/_new 2026-10-28 17:48:36.938255241 +0100 @@ -18,10 +18,11 @@ %define kf6_version 6.15.0 %define qt6_version 6.5.0 +%define so_version 4 %bcond_without released Name: mpvqt -Version: 1.2.0 +Version: 1.2.1 Release: 0 Summary: Libmpv wrapper for QtQuick2 and QML License: LGPL-2.1-or-later @@ -39,17 +40,17 @@ %description MpvQt is a libmpv wrapper for QtQuick2 and QML. -%package -n libMpvQt3 +%package -n libMpvQt%{so_version} Summary: Libmpv wrapper for QtQuick2 and QML # Marked as runtime deps in the build system, but looks unneeded # Recommends: (yt-dlp or youtube-dl) -%description -n libMpvQt3 +%description -n libMpvQt%{so_version} MpvQt is a libmpv wrapper for QtQuick2 and QML. %package devel Summary: Development files for mpvqt -Requires: libMpvQt3 = %{version} +Requires: libMpvQt%{so_version} = %{version} Requires: cmake(Qt6Quick) >= %{qt6_version} Requires: pkgconfig(mpv) @@ -67,9 +68,9 @@ %install %kf6_install -%ldconfig_scriptlets -n libMpvQt3 +%ldconfig_scriptlets -n libMpvQt%{so_version} -%files -n libMpvQt3 +%files -n libMpvQt%{so_version} %license LICENSES/* %{_kf6_libdir}/libMpvQt.so.* ++++++ mpvqt-1.2.0.tar.xz -> mpvqt-1.2.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpvqt-1.2.0/CMakeLists.txt new/mpvqt-1.2.1/CMakeLists.txt --- old/mpvqt-1.2.0/CMakeLists.txt 2026-05-18 10:42:52.000000000 +0200 +++ new/mpvqt-1.2.1/CMakeLists.txt 2026-10-26 14:00:02.000000000 +0100 @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.16...3.31) -project(MpvQt VERSION 1.2.0 LANGUAGES CXX) +project(MpvQt VERSION 1.2.1 LANGUAGES CXX) set(REQUIRED_QT_VERSION 6.5.0) @@ -40,7 +40,7 @@ VARIABLE_PREFIX MPVQT VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/mpvqt_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/MpvQtConfigVersion.cmake" - SOVERSION 3 + SOVERSION 4 ) include(CMakePackageConfigHelpers) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpvqt-1.2.0/cmake/FindLibmpv.cmake new/mpvqt-1.2.1/cmake/FindLibmpv.cmake --- old/mpvqt-1.2.0/cmake/FindLibmpv.cmake 2026-05-18 10:42:52.000000000 +0200 +++ new/mpvqt-1.2.1/cmake/FindLibmpv.cmake 2026-10-26 14:00:02.000000000 +0100 @@ -52,8 +52,6 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libmpv - FOUND_VAR - Libmpv_FOUND REQUIRED_VARS Libmpv_LIBRARIES Libmpv_INCLUDE_DIRS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpvqt-1.2.0/src/mpvcontroller.cpp new/mpvqt-1.2.1/src/mpvcontroller.cpp --- old/mpvqt-1.2.0/src/mpvcontroller.cpp 2026-05-18 10:42:52.000000000 +0200 +++ new/mpvqt-1.2.1/src/mpvcontroller.cpp 2026-10-26 14:00:02.000000000 +0100 @@ -24,19 +24,22 @@ { dst->format = is_map ? MPV_FORMAT_NODE_MAP : MPV_FORMAT_NODE_ARRAY; mpv_node_list *list = new mpv_node_list(); - dst->u.list = list; - if (!list) { + if (list == nullptr) { + qCDebug(MpvQt_MpvController) << "createList: list is nullptr"; freeNode(dst); return nullptr; } + dst->u.list = list; list->values = new mpv_node[num](); - if (!list->values) { + if (list->values == nullptr) { + qCDebug(MpvQt_MpvController) << "createList: list->values is nullptr"; freeNode(dst); return nullptr; } if (is_map) { list->keys = new char *[num](); - if (!list->keys) { + if (list->keys == nullptr) { + qCDebug(MpvQt_MpvController) << "createList: list->keys is nullptr"; freeNode(dst); return nullptr; } @@ -64,7 +67,8 @@ } else if (src.canConvert<QVariantList>()) { QVariantList qlist = src.toList(); mpv_node_list *list = createList(dst, false, qlist.size()); - if (!list) { + if (list == nullptr) { + qCDebug(MpvQt_MpvController) << "setNode QVariantList: list is nullptr"; dst->format = MPV_FORMAT_NONE; return; } @@ -75,7 +79,8 @@ } else if (src.canConvert<QVariantMap>()) { QVariantMap qmap = src.toMap(); mpv_node_list *list = createList(dst, true, qmap.size()); - if (!list) { + if (list == nullptr) { + qCDebug(MpvQt_MpvController) << "setNode QVariantMap: list is nullptr"; dst->format = MPV_FORMAT_NONE; return; } @@ -83,7 +88,8 @@ int n = 0; for (auto it = qmap.constKeyValueBegin(); it != qmap.constKeyValueEnd(); ++it) { list->keys[n] = qstrdup(it.operator*().first.toUtf8().data()); - if (!list->keys[n]) { + if (list->keys[n] == nullptr) { + qCDebug(MpvQt_MpvController) << "setNode QVariantMap: list->keys[n] is nullptr"; freeNode(dst); dst->format = MPV_FORMAT_NONE; return; @@ -99,9 +105,6 @@ bool MpvControllerPrivate::testType(const QVariant &v, QMetaType::Type t) { - // The Qt docs say: "Although this function is declared as returning - // QVariant::Type(obsolete), the return value should be interpreted - // as QMetaType::Type." So a cast is needed to avoid warnings. return v.typeId() == t; } @@ -147,6 +150,10 @@ return QVariant(node->u.double_); case MPV_FORMAT_NODE_ARRAY: { mpv_node_list *list = node->u.list; + if (list == nullptr) { + qCDebug(MpvQt_MpvController) << "nodeToVariant MPV_FORMAT_NODE_ARRAY: list is nullptr"; + return {}; + } QVariantList qlist; for (int n = 0; n < list->num; ++n) { qlist.append(nodeToVariant(&list->values[n])); @@ -155,6 +162,10 @@ } case MPV_FORMAT_NODE_MAP: { mpv_node_list *list = node->u.list; + if (list == nullptr) { + qCDebug(MpvQt_MpvController) << "nodeToVariant MPV_FORMAT_NODE_MAP: list is nullptr"; + return {}; + } QVariantMap qmap; for (int n = 0; n < list->num; ++n) { qmap.insert(QString::fromUtf8(list->keys[n]), nodeToVariant(&list->values[n])); @@ -186,7 +197,7 @@ std::setlocale(LC_NUMERIC, "C"); d_ptr->m_mpv = mpv_create(); - if (!d_ptr->m_mpv) { + if (d_ptr->m_mpv == nullptr) { qFatal("could not create mpv context"); } if (mpv_initialize(d_ptr->m_mpv) < 0) { @@ -205,6 +216,10 @@ void MpvController::mpvEvents(void *ctx) { + if (ctx == nullptr) { + qCDebug(MpvQt_MpvController) << "mpvEvents: ctx is nullptr"; + return; + } QMetaObject::invokeMethod(static_cast<MpvController *>(ctx), &MpvController::eventHandler, Qt::QueuedConnection); } @@ -212,6 +227,10 @@ { while (d_ptr->m_mpv) { mpv_event *event = mpv_wait_event(d_ptr->m_mpv, 0); + if (event == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler: event is nullptr"; + continue; + } if (event->event_id == MPV_EVENT_NONE) { break; } @@ -227,7 +246,11 @@ } case MPV_EVENT_END_FILE: { - auto prop = static_cast<mpv_event_end_file *>(event->data); + const auto *prop = static_cast<mpv_event_end_file *>(event->data); + if (prop == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_END_FILE: prop is nullptr"; + continue; + } if (prop->reason == MPV_END_FILE_REASON_EOF) { Q_EMIT endFile(QStringLiteral("eof")); } else if (prop->reason == MPV_END_FILE_REASON_STOP) { @@ -244,8 +267,12 @@ } case MPV_EVENT_GET_PROPERTY_REPLY: { - mpv_event_property *prop = static_cast<mpv_event_property *>(event->data); - auto data = d_ptr->nodeToVariant(reinterpret_cast<mpv_node *>(prop->data)); + const mpv_event_property *prop = static_cast<mpv_event_property *>(event->data); + if (prop == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_GET_PROPERTY_REPLY: prop is nullptr"; + continue; + } + const auto data = d_ptr->nodeToVariant(reinterpret_cast<mpv_node *>(prop->data)); Q_EMIT asyncReply(data, {*event}); break; } @@ -257,13 +284,21 @@ case MPV_EVENT_COMMAND_REPLY: { mpv_event_property *prop = static_cast<mpv_event_property *>(event->data); + if (prop == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_COMMAND_REPLY: prop is nullptr"; + continue; + } auto data = d_ptr->nodeToVariant(reinterpret_cast<mpv_node *>(prop)); Q_EMIT asyncReply(data, {*event}); break; } case MPV_EVENT_PROPERTY_CHANGE: { - mpv_event_property *prop = static_cast<mpv_event_property *>(event->data); + const mpv_event_property *prop = static_cast<mpv_event_property *>(event->data); + if (prop == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_PROPERTY_CHANGE: prop is nullptr"; + continue; + } QVariant data; switch (prop->format) { case MPV_FORMAT_DOUBLE: @@ -291,19 +326,57 @@ Q_EMIT propertyChanged(QString::fromUtf8(prop->name), data); break; } - case MPV_EVENT_NONE: case MPV_EVENT_SHUTDOWN: - case MPV_EVENT_LOG_MESSAGE: - case MPV_EVENT_CLIENT_MESSAGE: + Q_EMIT shutdown(); + break; + case MPV_EVENT_LOG_MESSAGE: { + mpv_event_log_message *logMessageEvent = static_cast<mpv_event_log_message *>(event->data); + if (logMessageEvent == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_LOG_MESSAGE: logMessageEvent is nullptr"; + break; + } + Q_EMIT logMessage(QString::fromUtf8(logMessageEvent->prefix), QString::fromUtf8(logMessageEvent->level), QString::fromUtf8(logMessageEvent->text)); + break; + } + case MPV_EVENT_CLIENT_MESSAGE: { + mpv_event_client_message *clientMessageEvent = static_cast<mpv_event_client_message *>(event->data); + if (clientMessageEvent == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_CLIENT_MESSAGE: clientMessageEvent is nullptr"; + break; + } + QStringList args; + for (int i = 0; i < clientMessageEvent->num_args; i++) { + args.append(QString::fromUtf8(clientMessageEvent->args[i])); + } + Q_EMIT clientMessage(event->reply_userdata, args); + break; + } case MPV_EVENT_AUDIO_RECONFIG: + Q_EMIT audioReconfig(); + break; case MPV_EVENT_SEEK: + Q_EMIT seek(); + break; case MPV_EVENT_PLAYBACK_RESTART: + Q_EMIT playbackRestart(); + break; case MPV_EVENT_QUEUE_OVERFLOW: - case MPV_EVENT_HOOK: + Q_EMIT queueOverflow(); + break; + case MPV_EVENT_HOOK: { + mpv_event_hook *hookEvent = static_cast<mpv_event_hook *>(event->data); + if (hookEvent == nullptr) { + qCDebug(MpvQt_MpvController) << "eventHandler MPV_EVENT_HOOK: hookEvent is nullptr"; + break; + } + Q_EMIT hook(QString::fromUtf8(hookEvent->name), hookEvent->id, event->reply_userdata); + break; + } #if MPV_ENABLE_DEPRECATED case MPV_EVENT_IDLE: case MPV_EVENT_TICK: #endif + case MPV_EVENT_NONE: break; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpvqt-1.2.0/src/mpvcontroller.h new/mpvqt-1.2.1/src/mpvcontroller.h --- old/mpvqt-1.2.0/src/mpvcontroller.h 2026-05-18 10:42:52.000000000 +0200 +++ new/mpvqt-1.2.1/src/mpvcontroller.h 2026-10-26 14:00:02.000000000 +0100 @@ -183,6 +183,14 @@ void fileLoaded(); void endFile(QString reason); void videoReconfig(); + void seek(); + void playbackRestart(); + void queueOverflow(); + void shutdown(); + void logMessage(QString prefix, QString level, QString msg); + void clientMessage(uint64_t eventId, QStringList args); + void audioReconfig(); + void hook(QString name, uint64_t hookId, uint64_t eventId); private: std::shared_ptr<MpvHandleManager> mpvHandleManager() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpvqt-1.2.0/src/mpvrenderer.cpp new/mpvqt-1.2.1/src/mpvrenderer.cpp --- old/mpvqt-1.2.0/src/mpvrenderer.cpp 2026-05-18 10:42:52.000000000 +0200 +++ new/mpvqt-1.2.1/src/mpvrenderer.cpp 2026-10-26 14:00:02.000000000 +0100 @@ -23,7 +23,8 @@ Q_UNUSED(ctx) QOpenGLContext *glctx = QOpenGLContext::currentContext(); - if (!glctx) { + if (glctx == nullptr) { + qCDebug(MpvQt_MpvRenderer) << "get_proc_address_mpv: glctx is nullptr"; return nullptr; } @@ -126,7 +127,7 @@ mpv_handle *handle = m_mpvResourceManager->mpvHandleManager->mpvHandle; int result = mpv_render_context_create(&renderCtx, handle, params); if (result < 0) { - qCritical() << "failed to initialize mpv GL context:" << mpv_error_string(result); + qCCritical(MpvQt_MpvRenderer) << "failed to initialize mpv GL context:" << mpv_error_string(result); return nullptr; }
