Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package upplay for openSUSE:Factory checked 
in at 2026-06-08 14:23:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/upplay (Old)
 and      /work/SRC/openSUSE:Factory/.upplay.new.2375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "upplay"

Mon Jun  8 14:23:10 2026 rev:19 rq:1357892 version:1.9.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/upplay/upplay.changes    2026-02-24 
15:40:47.299861370 +0100
+++ /work/SRC/openSUSE:Factory/.upplay.new.2375/upplay.changes  2026-06-08 
14:28:14.564331674 +0200
@@ -1,0 +2,8 @@
+Sun Jun  7 21:43:23 UTC 2026 - Holden Fried <[email protected]>
+
+- Update to 1.9.11:
+  * Fix compatibility with Qt 6.11.
+  * Delete temporary file used for cover display. We used to leave
+    them in $TMPDIR.
+
+-------------------------------------------------------------------

Old:
----
  upplay-1.9.10.tar.gz
  upplay-1.9.10.tar.gz.asc

New:
----
  upplay-1.9.11.tar.gz
  upplay-1.9.11.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ upplay.spec ++++++
--- /var/tmp/diff_new_pack.KLRG2X/_old  2026-06-08 14:28:15.280361386 +0200
+++ /var/tmp/diff_new_pack.KLRG2X/_new  2026-06-08 14:28:15.288361717 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           upplay
-Version:        1.9.10
+Version:        1.9.11
 Release:        0
 Summary:        UPnP and OpenHome audio Control Point
 License:        GPL-2.0-or-later

++++++ upplay-1.9.10.tar.gz -> upplay-1.9.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/GUI/mainw/mainw.cpp 
new/upplay-1.9.11/GUI/mainw/mainw.cpp
--- old/upplay-1.9.10/GUI/mainw/mainw.cpp       2025-04-14 15:38:09.000000000 
+0200
+++ new/upplay-1.9.11/GUI/mainw/mainw.cpp       2026-05-26 14:21:03.000000000 
+0200
@@ -498,6 +498,7 @@
 
 void GUI_Player::closeEvent(QCloseEvent* e)
 {
+    delete m_covertempfile;
     if (hsplitter)
         m_settings->setSplitterState(hsplitter->saveState());
     if (vsplitter)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/GUI/mainw/mw_cover.cpp 
new/upplay-1.9.11/GUI/mainw/mw_cover.cpp
--- old/upplay-1.9.10/GUI/mainw/mw_cover.cpp    2025-04-02 15:41:38.000000000 
+0200
+++ new/upplay-1.9.11/GUI/mainw/mw_cover.cpp    2026-05-26 14:52:22.000000000 
+0200
@@ -1,6 +1,6 @@
 /* Copyright (C) 2012  Lucio Carreras
  *
- * This file is part of sayonara player
+ * Copyright (C) 2015-2026 Jean-Francois Dockes
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,6 +43,11 @@
     }
     QNetworkRequest req{QUrl(uri)};
     req.setHeader(QNetworkRequest::UserAgentHeader, "Upplay Control Point");
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+    // Qt5 set this to 0 (no following) by default. Qt6 has 1
+    req.setAttribute(QNetworkRequest::RedirectPolicyAttribute,
+                     QNetworkRequest::NoLessSafeRedirectPolicy);
+#endif
     m_currentCoverReply = m_netmanager->get(req);
 }
 
@@ -55,10 +60,15 @@
         reply->deleteLater();
         return;
     }
-    if (reply->error() != QNetworkReply::NoError) {
+    auto error = reply->error();
+    QVariant v;
+    v = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+    LOGDEB0("GUI_Player::sl_cover_fetch_done: erro code: " << error <<
+            " response status: " << v.toInt() << "\n");
+    if (QNetworkReply::NoError != error) {
+        LOGDEB("GUI_Player::sl_cover_fetch_done: fetch failed with error "<< 
error << "\n");
         reply->deleteLater();
         sl_no_cover_available();
-        LOGDEB("GUI_Player::sl_cover_fetch_done: fetch failed\n");
         return;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/GUI/mdatawidget/mdatawidget.cpp 
new/upplay-1.9.11/GUI/mdatawidget/mdatawidget.cpp
--- old/upplay-1.9.10/GUI/mdatawidget/mdatawidget.cpp   2026-01-28 
14:30:09.000000000 +0100
+++ new/upplay-1.9.11/GUI/mdatawidget/mdatawidget.cpp   2026-05-27 
11:48:46.000000000 +0200
@@ -17,7 +17,6 @@
 
 #include "mdatawidget.h"
 
-#include <iostream>
 #include <set>
 
 #include <QDebug>
@@ -40,6 +39,7 @@
 #include <QNetworkDiskCache>
 #endif
 
+#define LOGGER_LOCAL_LOGINC 4
 #include <libupnpp/log.h>
 #include <libupnpp/control/cdircontent.hxx>
 
@@ -193,18 +193,24 @@
     bool okdidl{false};
     std::set<std::string> m_values;
     std::string operator()(const std::string& key) {
-        if (!okdidl) {
-            // use MetaData should we?
-            LOGDEB1("mdatawidget: NO DIDL\n");
-            return "";
-        } 
         std::string value;
-        if (key == "upnp:artist") {
-            value = m_dirent.getArtists();
-        } else if (key == "dc:title") {
-            value = m_dirent.m_title;
-        } else {
-            value = m_dirent.getprop(key);
+        if (!okdidl) {
+            // Happens. Use MetaData
+            if (key == "upnp:artist") {
+                value = qs2utf8s(m_md.artist);
+            } else if (key == "dc:title") {
+                value = qs2utf8s(m_md.title);
+            } else if (key == "upnp:album") {
+                value = qs2utf8s(m_md.album);
+            }
+        }  else {
+            if (key == "upnp:artist") {
+                value = m_dirent.getArtists();
+            } else if (key == "dc:title") {
+                value = m_dirent.m_title;
+            } else {
+                value = m_dirent.getprop(key);
+            }
         }
         // Only return something if we did not already see the value. Avoids 
e.g. upnp:artist
         // dc:creator dups.
@@ -236,15 +242,15 @@
     std::string hfrag;
     FieldFetcher f(m_data);
     pcSubst(playerhtmlfrag, hfrag, f);
-    LOGDEB1("mdatawidget: HTML FRAG [" << hfrag << "]\n");
-    m_view->setHtml(htmltemplate
-                    /*1*/.arg(m_imgurl)
-                    /*2*/.arg(w)
-                    /*3*/.arg(u8s2qs(hfrag))
-                    /*4*/.arg(o_scaledcss)
-                    /*5*/.arg(h)
-                    ,
-                    baseUrl);
+    LOGDEB0("mdatawidget::display. imgurl " <<
+            qs2utf8s(m_imgurl) << " mdata frag " << hfrag << "\n");
+    QString html = htmltemplate
+        /*1*/.arg(m_imgurl)
+        /*2*/.arg(w)
+        /*3*/.arg(u8s2qs(hfrag))
+        /*4*/.arg(o_scaledcss)
+        /*5*/.arg(h);
+    m_view->setHtml(html, baseUrl);
 }
 
 void MDataWidget::refresh()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/GUI/standard.qss 
new/upplay-1.9.11/GUI/standard.qss
--- old/upplay-1.9.10/GUI/standard.qss  2024-06-06 09:52:29.000000000 +0200
+++ new/upplay-1.9.11/GUI/standard.qss  2026-05-27 14:34:09.000000000 +0200
@@ -1,9 +1,25 @@
 /* Color stuff for "light" scheme */
 
+QWidget {
+    border: none;
+    background-color: #EFEFEF;
+}
+
+QListView, QTableView {
+    background-color: white;
+}
+
+
 QListView:focus, QTableView:focus {
     border: 2px solid #424e72;
 }
 
+QLineEdit,QSpinBox,QComboBox {
+    border: 1px solid #424e72;
+    border-radius: 4px;
+    background-color: white;
+}
+
 QPushButton[flat=true] {
     color: white;
     border-radius: 7;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/GUI/widgets/cdwebpage.h 
new/upplay-1.9.11/GUI/widgets/cdwebpage.h
--- old/upplay-1.9.10/GUI/widgets/cdwebpage.h   2025-04-02 15:41:38.000000000 
+0200
+++ new/upplay-1.9.11/GUI/widgets/cdwebpage.h   2026-05-27 12:32:13.000000000 
+0200
@@ -38,6 +38,8 @@
 public:
     CDWebPage(QWebEngineProfile *profile, QWidget *parent = nullptr) 
         : QWebEnginePage(profile, parent) {}
+    CDWebPage(QWidget *parent = nullptr) 
+        : QWebEnginePage(parent) {}
 
 protected:
     virtual bool acceptNavigationRequest(const QUrl& url, NavigationType 
navType, bool);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/appimage/makeimage.sh 
new/upplay-1.9.11/appimage/makeimage.sh
--- old/upplay-1.9.10/appimage/makeimage.sh     1970-01-01 01:00:00.000000000 
+0100
+++ new/upplay-1.9.11/appimage/makeimage.sh     2026-04-24 09:37:34.000000000 
+0200
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+# Currently running on debian bullseye
+
+fatal()
+{
+    echo $*
+    exit 1
+}
+
+BUILDTOP=`pwd`
+UPPDISTS=/home/dockes/projets/lesbonscomptes/upplay/downloads
+
+FROMGIT=0
+UPPLAY_VERSION=1.9.10
+
+DEPLOYBINDIR=~/.local/bin
+
+APPDIR=$BUILDTOP/AppDir/
+BUILDDIR=$BUILDTOP/upplay-build
+# NOTE: delete the builddir when changing versions. Not done automatically 
because complicated
+#rm -rf $BUILDDIR
+
+if test $FROMGIT -ne 0; then
+    UPPLAY=/home/dockes/projets/mpdupnp/upplay
+else
+    # TBD: Replace this with curl or wget from the web site so we don't need a 
local copy on the VM ?
+    UPPLAY=$BUILDTOP/upplay-${UPPLAY_VERSION}
+    test -d $UPPLAY || (cd $BUILDTOP && tar xf 
$UPPDISTS/upplay-${UPPLAY_VERSION}.tar.gz) || \
+        fatal source extraction
+fi
+
+rm -rf ${APPDIR}/*
+
+cd $UPPLAY/
+
+if test $FROMGIT -ne 0; then
+    hash=`git log -n 1 | head -1 | awk '{print $2}' | cut -b 1-8`
+fi
+
+mkdir -p $BUILDDIR
+cd $BUILDDIR || exit 1
+qmake $UPPLAY/upplay.pro
+make -j 4
+
+echo;echo INSTALLING TO $APPDIR
+make install INSTALL_ROOT=$APPDIR 
+
+mkdir -p $APPDIR/usr/lib
+
+# This is needed because more recent versions of libssl dropped some functions.
+# See discussion for example https://github.com/kiwix/kiwix-desktop/issues/871
+# We're only using ssl to fetch cover images (or possibly audio data in some 
cases?),
+# so using an older ssl lib should not be a problem.
+cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 $APPDIR/usr/lib/
+
+cd $BUILDTOP
+$DEPLOYBINDIR/linuxdeploy-x86_64.AppImage \
+    --appdir $APPDIR \
+    --plugin qt --output appimage
+
+dte=`date +%Y%m%d`
+cp Upplay-x86_64.AppImage 
Upplay-${UPPLAY_VERSION}-${dte}-${hash}-x86_64.AppImage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/dirbrowser/cdbrowser.cpp 
new/upplay-1.9.11/dirbrowser/cdbrowser.cpp
--- old/upplay-1.9.10/dirbrowser/cdbrowser.cpp  2026-02-24 09:50:55.000000000 
+0100
+++ new/upplay-1.9.11/dirbrowser/cdbrowser.cpp  2026-05-27 13:24:25.000000000 
+0200
@@ -123,6 +123,9 @@
     
     CDWebPage *webpage{nullptr};
 #ifdef USING_WEBENGINE
+#if (QT_VERSION < QT_VERSION_CHECK(6, 11, 0))
+    // For some reason using a non-default profile with qt 6.11 appears to 
cause an internal loop
+    // allocating memory, causing bad app behaviour, and a final OOM crash.
     auto profile = new QWebEngineProfile("upplay", this);
     profile->setHttpUserAgent("Upplay Control Point");
     if (cachembs > 0) {
@@ -130,6 +133,10 @@
         profile->setHttpCacheMaximumSize(cachembs * 1024 * 1024);
     }
     webpage = new CDWebPage(profile, this);
+#else
+    Q_UNUSED(cachembs);
+    webpage = new CDWebPage(this);
+#endif
     m_channel.registerObject("popup_helper", &m_puhelper);
     webpage->setWebChannel(&m_channel);
     connect(&m_puhelper, SIGNAL(triggered()), this, SLOT(createPopupMenu()));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/upadapt/metadata.conf 
new/upplay-1.9.11/upadapt/metadata.conf
--- old/upplay-1.9.10/upadapt/metadata.conf     2025-12-18 17:53:57.000000000 
+0100
+++ new/upplay-1.9.11/upadapt/metadata.conf     2026-03-06 16:38:10.000000000 
+0100
@@ -17,6 +17,8 @@
 upmpd:albumavailablereleasedate = Available Release Date
 upmpd:albumduration = Duration
 upmpd:albumdisctrackcounters = Discs/Tracks
+upmpd:albumcompressiontype = Album Compression Type
+upmpd:albumaveragebitrate = Album Average Bitrate
 upmpd:albumquality = Album Quality
 upmpd:albumqualityoftracks = Quality of Tracks
 upmpd:albumversion = Version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/upplay.pro new/upplay-1.9.11/upplay.pro
--- old/upplay-1.9.10/upplay.pro        2026-02-24 10:01:40.000000000 +0100
+++ new/upplay-1.9.11/upplay.pro        2026-05-27 14:31:07.000000000 +0200
@@ -2,8 +2,8 @@
 TARGET          = upplay
 
 # VERSION is ^egrepped and must stay in the first column
-VERSION = 1.9.10
-COPYRDATES = 2011-2025
+VERSION = 1.9.11
+COPYRDATES = 2011-2026
 
 # Possibly override WEBPLATFORM from the command line, or environment
 WEBPLATFORM = $${WEBPLATFORM}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/utils/pathut.cpp 
new/upplay-1.9.11/utils/pathut.cpp
--- old/upplay-1.9.10/utils/pathut.cpp  2026-02-12 13:34:23.000000000 +0100
+++ new/upplay-1.9.11/utils/pathut.cpp  2026-03-23 09:11:16.000000000 +0100
@@ -284,7 +284,7 @@
 }
 bool path_isdriveabs(const std::string& s)
 {
-    if (s.size() >= 3 && isalpha(s[0]) && s[1] == ':' && s[2] == '/') {
+    if (s.size() >= 3 && isalpha(s[0]) && s[1] == ':' && (s[2] == '/' || s[2] 
== '\\')) {
         return true;
     }
     return false;
@@ -610,8 +610,9 @@
     if (!GetDiskFreeSpaceExW(syspath, &freebytesavail, &totalbytes, NULL)) {
         return false;
     }
+    auto mpc = int((100 * (totalbytes.QuadPart - freebytesavail.QuadPart)) / 
totalbytes.QuadPart); 
     if (pc) {
-        *pc = int((100 * freebytesavail.QuadPart) / totalbytes.QuadPart);
+        *pc = mpc;
     }
     if (avmbs) {
         *avmbs = int(totalbytes.QuadPart / FSOCC_MB);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upplay-1.9.10/utils/smallut.cpp 
new/upplay-1.9.11/utils/smallut.cpp
--- old/upplay-1.9.10/utils/smallut.cpp 2025-10-30 09:05:53.000000000 +0100
+++ new/upplay-1.9.11/utils/smallut.cpp 2026-03-21 08:24:00.000000000 +0100
@@ -653,11 +653,10 @@
 }
 
 
-/* Truncate a string to a given maxlength, avoiding cutting off midword
- * if reasonably possible. Note: we could also use textsplit, stopping when
- * we have enough, this would be cleanly utf8-aware but would remove
- * punctuation */
-static const std::string cstr_SEPAR = " \t\n\r-:.;,/[]{}";
+// Truncate a string to a given maxlength, avoiding cutting off midword if 
reasonably
+// possible. Note: we could also use textsplit, stopping when we have enough, 
this would be cleanly
+// utf8-aware but would remove punctuation.
+static const std::string cstr_SEPAR = " \t\n\r-:.;,/[]{}_";
 std::string truncate_to_word(const std::string& input, std::string::size_type 
maxlen)
 {
     std::string output;
@@ -666,12 +665,10 @@
     } else {
         output = input.substr(0, maxlen);
         std::string::size_type space = output.find_last_of(cstr_SEPAR);
-        // Original version only truncated at space if space was found after
-        // maxlen/2. But we HAVE to truncate at space, else we'd need to do
-        // utf8 stuff to avoid truncating at multibyte char. In any case,
-        // not finding space means that the text probably has no value.
-        // Except probably for Asian languages, so we may want to fix this
-        // one day
+        // The original version only truncated at space if space was found 
after maxlen/2. But we
+        // HAVE to truncate at space, else we'd need to do utf8 stuff to avoid 
truncating at
+        // multibyte char. In any case, not finding space means that the text 
probably has no value.
+        // Except probably for Asian languages, so we may want to fix this one 
day
         if (space == std::string::npos) {
             output.erase();
         } else {

Reply via email to