Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-speech for openSUSE:Factory 
checked in at 2025-10-13 17:23:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-speech (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-speech.new.18484 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-speech"

Mon Oct 13 17:23:50 2025 rev:25 rq:1310367 version:6.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-speech/qt6-speech.changes    2025-08-29 
18:35:55.771918589 +0200
+++ /work/SRC/openSUSE:Factory/.qt6-speech.new.18484/qt6-speech.changes 
2025-10-13 17:27:08.522808128 +0200
@@ -1,0 +2,6 @@
+Tue Oct  7 08:53:30 UTC 2025 - Christophe Marin <[email protected]>
+
+- Update to 6.10.0
+  * https://www.qt.io/blog/qt-6.10-released
+
+-------------------------------------------------------------------

Old:
----
  qtspeech-everywhere-src-6.9.2.tar.xz

New:
----
  qtspeech-everywhere-src-6.10.0.tar.xz

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

Other differences:
------------------
++++++ qt6-speech.spec ++++++
--- /var/tmp/diff_new_pack.v1O1lq/_old  2025-10-13 17:27:09.486848440 +0200
+++ /var/tmp/diff_new_pack.v1O1lq/_new  2025-10-13 17:27:09.490848607 +0200
@@ -16,8 +16,8 @@
 #
 
 
-%define real_version 6.9.2
-%define short_version 6.9
+%define real_version 6.10.0
+%define short_version 6.10
 %define tar_name qtspeech-everywhere-src
 %define tar_suffix %{nil}
 #
@@ -31,10 +31,10 @@
 %bcond_without flite
 %endif
 Name:           qt6-speech%{?pkg_suffix}
-Version:        6.9.2
+Version:        6.10.0
 Release:        0
 Summary:        Qt 6 TextToSpeech Library and Plugin
-License:        LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+License:        GPL-2.0-only OR LGPL-3.0-only OR GPL-3.0-only
 URL:            https://www.qt.io
 Source0:        
https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
 %if %{with flite}
@@ -134,7 +134,7 @@
 %{_qt6_includedir}/QtTextToSpeech/
 %{_qt6_libdir}/libQt6TextToSpeech.prl
 %{_qt6_libdir}/libQt6TextToSpeech.so
-%{_qt6_metatypesdir}/qt6texttospeech_*_metatypes.json
+%{_qt6_metatypesdir}/qt6texttospeech_metatypes.json
 %{_qt6_mkspecsdir}/modules/qt_lib_texttospeech.pri
 %{_qt6_pkgconfigdir}/Qt6TextToSpeech.pc
 %exclude %{_qt6_includedir}/QtTextToSpeech/%{real_version}

++++++ qtspeech-everywhere-src-6.9.2.tar.xz -> 
qtspeech-everywhere-src-6.10.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtspeech-everywhere-src-6.9.2/.cmake.conf 
new/qtspeech-everywhere-src-6.10.0/.cmake.conf
--- old/qtspeech-everywhere-src-6.9.2/.cmake.conf       2025-08-18 
03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/.cmake.conf      2025-10-02 
03:55:33.000000000 +0200
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.9.2")
+set(QT_REPO_MODULE_VERSION "6.10.0")
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1")
 list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_FOREACH=1")
 list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_CONTEXTLESS_CONNECT=1")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtspeech-everywhere-src-6.9.2/.tag 
new/qtspeech-everywhere-src-6.10.0/.tag
--- old/qtspeech-everywhere-src-6.9.2/.tag      2025-08-18 03:29:35.000000000 
+0200
+++ new/qtspeech-everywhere-src-6.10.0/.tag     2025-10-02 03:55:33.000000000 
+0200
@@ -1 +1 @@
-293dc229f2cd86b16fc486e4253725a943cadf83
+16bc9d9b74145b17e68529ca872a81f5b8a679d5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtspeech-everywhere-src-6.9.2/dependencies.yaml 
new/qtspeech-everywhere-src-6.10.0/dependencies.yaml
--- old/qtspeech-everywhere-src-6.9.2/dependencies.yaml 2025-08-18 
03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/dependencies.yaml        2025-10-02 
03:55:33.000000000 +0200
@@ -1,10 +1,10 @@
 dependencies:
   ../qtbase:
-    ref: 6f0d27d2e4ba5fa6562f738aaaf8eaf98ebf51e7
+    ref: 5a8637e4516bc48a0b3f4b5ec3b18618b92e7222
     required: true
   ../qtdeclarative:
-    ref: b653aebb2175203d86199b1d320fd10f939df3fc
+    ref: 7e0ab1d98c159c9f4c9afab78b43e7c70f449e41
     required: false
   ../qtmultimedia:
-    ref: 36207ed2b30cbe4e3397dfa488c4267f633de58a
+    ref: 9f1cc9b35c0916084f6835f78b665a3b4e3fe4f9
     required: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/examples/speech/hello_speak/mainwindow.cpp 
new/qtspeech-everywhere-src-6.10.0/examples/speech/hello_speak/mainwindow.cpp
--- 
old/qtspeech-everywhere-src-6.9.2/examples/speech/hello_speak/mainwindow.cpp    
    2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/examples/speech/hello_speak/mainwindow.cpp   
    2025-10-02 03:55:33.000000000 +0200
@@ -182,3 +182,8 @@
             ui.voice->setCurrentIndex(ui.voice->count() - 1);
     }
 }
+
+MainWindow::~MainWindow()
+{
+    m_speech->disconnect(this);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/examples/speech/hello_speak/mainwindow.h 
new/qtspeech-everywhere-src-6.10.0/examples/speech/hello_speak/mainwindow.h
--- old/qtspeech-everywhere-src-6.9.2/examples/speech/hello_speak/mainwindow.h  
2025-08-18 03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/examples/speech/hello_speak/mainwindow.h 
2025-10-02 03:55:33.000000000 +0200
@@ -14,6 +14,7 @@
     Q_OBJECT
 public:
     explicit MainWindow(QWidget *parent = nullptr);
+    ~MainWindow();
 
 public slots:
     void setRate(int);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/examples/speech/quickspeech/Main.qml 
new/qtspeech-everywhere-src-6.10.0/examples/speech/quickspeech/Main.qml
--- old/qtspeech-everywhere-src-6.9.2/examples/speech/quickspeech/Main.qml      
2025-08-18 03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/examples/speech/quickspeech/Main.qml     
2025-10-02 03:55:33.000000000 +0200
@@ -69,14 +69,12 @@
                 text: qsTr("Speak")
                 enabled: [TextToSpeech.Paused, 
TextToSpeech.Ready].includes(tts.state)
                 onClicked: {
-//! [say0]
                     let voices = tts.availableVoices()
                     tts.voice = voices[voicesComboBox.currentIndex]
-//! [say1]
                     tts.say(input.text)
                 }
             }
-//! [say1]
+//! [say0]
 //! [pause]
             Button {
                 text: qsTr("Pause")
@@ -93,11 +91,13 @@
                 visible: tts.engineCapabilities & 
TextToSpeech.Capabilities.PauseResume
             }
 //! [resume]
+//! [stop]
             Button {
                 text: qsTr("Stop")
                 enabled: [TextToSpeech.Speaking, 
TextToSpeech.Paused].includes(tts.state)
                 onClicked: tts.stop()
             }
+//! [stop]
         }
 
         GridLayout {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/examples/speech/quickspeech/doc/src/quickspeech.qdoc
 
new/qtspeech-everywhere-src-6.10.0/examples/speech/quickspeech/doc/src/quickspeech.qdoc
--- 
old/qtspeech-everywhere-src-6.9.2/examples/speech/quickspeech/doc/src/quickspeech.qdoc
      2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/examples/speech/quickspeech/doc/src/quickspeech.qdoc
     2025-10-02 03:55:33.000000000 +0200
@@ -15,15 +15,14 @@
     can be used in a \l{Qt Quick} application to read out text and to control
     the speech.
 
-    The example uses \l{Qt Quick Controls} to provide controls for the 
speech's pitch,
-    volume, and rate. It also lets the user select an engine, a language, and 
a voice.
+    The example uses \l{Qt Quick Controls} to provide controls for the speech's
+    pitch, volume, and rate. It also lets the user select an engine, a
+    language, and a voice.
 
     \section1 Initializing a TextToSpeech
     First, we initialize the text to speech object \c{tts}:
 
-    \quotefromfile quickspeech/Main.qml
-    \skipto TextToSpeech {
-    \printuntil rate: rateSlider.value
+    \snippet quickspeech/Main.qml initialize
 
     \section1 Getting the status
 
@@ -31,20 +30,19 @@
 
     Switch cases are used to update the Label \c statusLabel in the footer.
 
-    \skipto onStateChanged: updateStateLabel(state)
-    \printuntil }
+    \snippet quickspeech/Main.qml stateChanged
 
     \section1 Highlighting words as they are spoken
 
     The TextArea \c input is used to get the text to input and the
-    \l{TextToSpeech::sayingWord}{onSayingWord} signal as the trigger and also 
to know
-    the position to highlight words as they are spoken.
+    \l{TextToSpeech::sayingWord}{onSayingWord} signal as the trigger and also
+    to know the position to highlight words as they are spoken.
 
-    \skipto onSayingWord:
-    \printuntil input.select(start, start + length)
+    \snippet quickspeech/Main.qml sayingWord
 
      The TextArea \c input is declared here:
 
+    \quotefromfile quickspeech/Main.qml
     \skipto ColumnLayout {
     \printuntil }
 
@@ -57,23 +55,20 @@
 
     A \l Button is created labeled "Speak". It is enabled if \c tts's state
     property is either \l{QTextToSpeech::}{Paused} or 
\l{QTextToSpeech::}{Ready}.
-
-    \skipto RowLayout
-    \printto onClicked: {
-
     When the button is clicked, the available voices on the target devices are
     retrieved, and \c tts.voice is set to the currently selected voice of
     \c voicesComboBox. Then TextToSpeech::say() is called and is passed the
     text in the \c inputbox.
 
-    \printuntil }
+    \snippet quickspeech/Main.qml say0
 
     \section1 The pause, resume, and stop buttons
 
     These buttons are similar in implementation to the \c Speak button:
 
-    \skipto Button {
-    \printto GridLayout {
+    \snippet quickspeech/Main.qml pause
+    \snippet quickspeech/Main.qml resume
+    \snippet quickspeech/Main.qml stop
 
     \section1 Selecting text to speech options
 
@@ -91,20 +86,21 @@
     The \l{ComboBox::activated}{onActivated} triggers assigning tts.engine the
     current text at the ComboBoxes current index.
 
-    \skipto Text {
+    \skipto Label {
     \printuntil updateVoices()
+    \printto Label {
 
     The last two lines in the above code snippet show that the available 
locales
     and voices are updated at this point as well, as they are dependent on the
     selected engine. Those functions are covered in a
     \l{Updating available options}{following section}.
 
-    The \c localesComboBox is implemented the same way as \c engineComboBox, 
but without
-    updating the available engines.
+    The \c localesComboBox is implemented the same way as \c engineComboBox, 
but
+    without updating the available engines.
 
 
     \printuntil id: voicesComboBox
-    \printto Text
+    \printto Label
 
     \section2 Selecting volume, pitch, and rate
 
@@ -118,7 +114,8 @@
     once the root ApplicationWindow has been instantiated.
 
     \list
-        \li The \c enginesComboBox index is set to the currently set engine of 
\c{tts}.
+        \li The \c enginesComboBox index is set to the currently set engine of
+            \c{tts}.
         \li The available locales and voices are updated.
         \li The current state of \c tts is signaled.
     \endlist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/android/jar/src/org/qtproject/qt/android/speech/QtTextToSpeech.java
 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/android/jar/src/org/qtproject/qt/android/speech/QtTextToSpeech.java
--- 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/android/jar/src/org/qtproject/qt/android/speech/QtTextToSpeech.java
       2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/android/jar/src/org/qtproject/qt/android/speech/QtTextToSpeech.java
      2025-10-02 03:55:33.000000000 +0200
@@ -9,10 +9,8 @@
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.speech.tts.TextToSpeech;
-import android.speech.tts.TextToSpeech.Engine;
 import android.speech.tts.TextToSpeech.OnInitListener;
 import android.speech.tts.UtteranceProgressListener;
-import android.os.Build;
 import android.os.Bundle;
 import android.util.Log;
 import java.lang.Float;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/sapi/qtexttospeech_sapi.cpp 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/sapi/qtexttospeech_sapi.cpp
--- 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/sapi/qtexttospeech_sapi.cpp   
    2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/sapi/qtexttospeech_sapi.cpp  
    2025-10-02 03:55:33.000000000 +0200
@@ -372,9 +372,26 @@
         qWarning() << "Could not convert language attribute to LCID";
         return QLocale();
     }
+
+    // Windows Vista+
+    WCHAR name[LOCALE_NAME_MAX_LENGTH] = {};
+    if (LCIDToLocaleName(locale, name, LOCALE_NAME_MAX_LENGTH, 0))
+        return QLocale(QString::fromWCharArray(name));
+
+    // Fallback to GetLocaleInfoW
     const int nchars = GetLocaleInfoW(locale, LOCALE_SISO639LANGNAME, NULL, 0);
     QVarLengthArray<wchar_t, 12> languageCode(nchars);
     GetLocaleInfoW(locale, LOCALE_SISO639LANGNAME, languageCode.data(), 
nchars);
+
+    // Use country code when available
+    const int countryCodeSize = GetLocaleInfoW(locale, 
LOCALE_SISO3166CTRYNAME, NULL, 0);
+    if (countryCodeSize > 0) {
+        QVarLengthArray<wchar_t, 12> countryCode(countryCodeSize);
+        GetLocaleInfoW(locale, LOCALE_SISO3166CTRYNAME, countryCode.data(), 
countryCodeSize);
+        return 
QLocale(u"%1_%2"_s.arg(QString::fromWCharArray(languageCode.data()),
+                                      
QString::fromWCharArray(countryCode.data())));
+    }
+
     return QLocale(QString::fromWCharArray(languageCode.data()));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt.cpp 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt.cpp
--- 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt.cpp 
    2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt.cpp
    2025-10-02 03:55:33.000000000 +0200
@@ -360,8 +360,9 @@
             emit sayingWord(d->currentBoundary->text, 
d->currentBoundary->beginIndex,
                             d->currentBoundary->endIndex - 
d->currentBoundary->beginIndex + 1);
         ++d->currentBoundary;
-        const qint64 msecsToNext = qMax((d->currentBoundary->startTime - 
elapsed) / 1000, 0);
+
         if (d->audioSource && d->currentBoundary != d->boundaries.constEnd()) {
+            const qint64 msecsToNext = qMax((d->currentBoundary->startTime - 
elapsed) / 1000, 0);
             d->boundaryTimer.start(msecsToNext, Qt::PreciseTimer, this);
         } else {
             d->boundaryTimer.stop();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.cpp
 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.cpp
--- 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.cpp
 2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.cpp
        2025-10-02 03:55:33.000000000 +0200
@@ -60,7 +60,6 @@
 */
 AudioSource::~AudioSource()
 {
-    Q_ASSERT(ref == 0);
     close();
 }
 
@@ -159,31 +158,39 @@
         const int silenceDuration = audioFormat.sampleRate() / 50;
         const short *sample = reinterpret_cast<short*>(pbyte);
         const qsizetype sampleCount = maxlen / sizeof(short);
-        if (sampleCount < silenceDuration)
-            break;
-        qint64 silenceCount = 0;
+
+        const bool isInitialPauseRequest = 
!m_pauseDetectionSilenceCount.has_value();
+        if (isInitialPauseRequest)
+            m_pauseDetectionSilenceCount = 0;
+
         for (qint64 index = 0; index < sampleCount; ++index) {
             if (qAbs(sample[index]) < 10) {
-                ++silenceCount;
-            } else if (silenceCount > silenceDuration) {
-                // long enough silence found, only provide the data until we 
are in the
-                // silence. If the silence is at the beginning of our buffer, 
start from
-                // there, otherwise play a bit of silence now.
-                if (index != silenceCount)
-                    silenceCount /= 2;
-
-                maxlen = (index - silenceCount) * 2;
-                // The next attempt to pull data will return nothing, and the 
audio sink
-                // will move to idle state.
+                *m_pauseDetectionSilenceCount += 1;
+            } else {
+                *m_pauseDetectionSilenceCount = 0;
+                continue;
+            }
+
+            if (*m_pauseDetectionSilenceCount > silenceDuration) {
+                // long enough silence found, only provide the data until we 
are in the silence.
+
+                // we will still try to play at least half of the silent part
+                const int silentSamplesToPlay = silenceDuration / 2;
+                maxlen = index > silentSamplesToPlay ? (index - 
silentSamplesToPlay) * sizeof(short)
+                                                     : index * sizeof(short);
+
                 m_pause = Paused;
+                m_pauseDetectionSilenceCount = std::nullopt;
                 break;
             } else {
-                silenceCount = 0;
+                *m_pauseDetectionSilenceCount = 0;
             }
         }
         // no silence found - stop after this chunk
-        if (m_pause != Paused)
+        if (m_pause != Paused) {
+            m_pauseDetectionSilenceCount = std::nullopt;
             m_pause = Paused;
+        }
         break;
     }
     case Paused:
@@ -199,7 +206,7 @@
 
     // We emptied the buffer, so schedule fetching more
     if (available <= maxlen)
-        QTimer::singleShot(0, this, &AudioSource::fetchMore);
+        fetchMore();
     else
         m_bufferOffset += maxlen;
 
@@ -234,25 +241,6 @@
     return ioPos >= ioSize;
 }
 
-HRESULT AudioSource::QueryInterface(REFIID riid, VOID **ppvInterface)
-{
-    if (!ppvInterface)
-        return E_POINTER;
-
-    if (riid == __uuidof(IUnknown)) {
-        *ppvInterface = static_cast<IUnknown*>(static_cast<StreamReadyHandler 
*>(this));
-    } else if (riid == __uuidof(StreamReadyHandler)) {
-        *ppvInterface = static_cast<StreamReadyHandler *>(this);
-    } else if (riid == __uuidof(BytesReadyHandler)) {
-        *ppvInterface = static_cast<BytesReadyHandler *>(this);
-    } else {
-        *ppvInterface = nullptr;
-        return E_NOINTERFACE;
-    }
-    AddRef();
-    return S_OK;
-}
-
 /*
     Completion handler for synthesising the stream.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.h
 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.h
--- 
old/qtspeech-everywhere-src-6.9.2/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.h
   2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/plugins/tts/winrt/qtexttospeech_winrt_audiosource.h
  2025-10-02 03:55:33.000000000 +0200
@@ -10,6 +10,7 @@
 #include <robuffer.h>
 #include <winrt/base.h>
 #include <QtCore/private/qfactorycacheregistration_p.h>
+#include <QtCore/private/qcomobject_p.h>
 #include <windows.foundation.h>
 #include <windows.media.speechsynthesis.h>
 #include <windows.storage.streams.h>
@@ -26,9 +27,7 @@
 using StreamReadyHandler = 
IAsyncOperationCompletedHandler<SpeechSynthesisStream*>;
 using BytesReadyHandler = 
IAsyncOperationWithProgressCompletedHandler<IBuffer*, UINT32>;
 
-class AudioSource : public QIODevice,
-                    public StreamReadyHandler,
-                    public BytesReadyHandler
+class AudioSource final : public QIODevice, public 
QComObject<StreamReadyHandler, BytesReadyHandler>
 {
     Q_OBJECT
 public:
@@ -82,18 +81,6 @@
         return boundaries;
     }
 
-    // IUnknown
-    ULONG STDMETHODCALLTYPE AddRef() override { return ++ref; }
-    ULONG STDMETHODCALLTYPE Release() override
-    {
-        if (!--ref) {
-            delete this;
-            return 0;
-        }
-        return ref;
-    }
-    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID **ppvInterface) 
override;
-
     // completion handler for synthesising the stream
     HRESULT STDMETHODCALLTYPE Invoke(IAsyncOperation<SpeechSynthesisStream*> 
*operation,
                                      AsyncStatus status) override;
@@ -131,11 +118,10 @@
     bool m_riffHeaderChecked = false;
     quint64 m_bytesRead = 0;
     quint64 m_pauseRequestedAt = 0;
+    std::optional<qint64> m_pauseDetectionSilenceCount;
 
     void populateBoundaries();
     QList<Boundary> boundaries;
-
-    ULONG ref = 1;
 };
 
 QT_END_NAMESPACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/tts/doc/qttexttospeech.qdocconf 
new/qtspeech-everywhere-src-6.10.0/src/tts/doc/qttexttospeech.qdocconf
--- old/qtspeech-everywhere-src-6.9.2/src/tts/doc/qttexttospeech.qdocconf       
2025-08-18 03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/src/tts/doc/qttexttospeech.qdocconf      
2025-10-02 03:55:33.000000000 +0200
@@ -21,6 +21,9 @@
 ignoresince = 6.4
 examplesinstallpath              = speech
 
+# Path to the root of qtspeech (for automatic linking to source code)
+url.sources.rootdir     = ../../..
+
 # Defines the name of the project. You cannot use operators (+, =, -) in
 # the name. Properties for this project are set using a 
qhp.<projectname>.property
 # format.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/src/tts/doc/src/qttexttospeech-index.qdoc 
new/qtspeech-everywhere-src-6.10.0/src/tts/doc/src/qttexttospeech-index.qdoc
--- old/qtspeech-everywhere-src-6.9.2/src/tts/doc/src/qttexttospeech-index.qdoc 
2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/src/tts/doc/src/qttexttospeech-index.qdoc    
    2025-10-02 03:55:33.000000000 +0200
@@ -70,8 +70,10 @@
     the \l{GNU General Public License, version 2}.
     See \l{Qt Licensing} for further details.
 
+\omit
     Furthermore, Qt TextToSpeech in Qt \QtVersion may contain third party
     modules under the following permissive licenses:
 
-    \generatelist{groupsbymodule attributions-qtspeech}
+    \annotatedlist attributions-qtspeech
+\endomit
 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/tests/auto/qtexttospeech/BLACKLIST 
new/qtspeech-everywhere-src-6.10.0/tests/auto/qtexttospeech/BLACKLIST
--- old/qtspeech-everywhere-src-6.9.2/tests/auto/qtexttospeech/BLACKLIST        
2025-08-18 03:29:35.000000000 +0200
+++ new/qtspeech-everywhere-src-6.10.0/tests/auto/qtexttospeech/BLACKLIST       
2025-10-02 03:55:33.000000000 +0200
@@ -1,5 +1,6 @@
 [pauseResume:darwin]
 macos-13 ci # QTBUG-108205
 macos-15 arm ci # QTBUG-108205
+macos-26 arm ci # QTBUG-108205
 [sayingWordWithPause:darwin]
 macos-13 ci # QTBUG-108205
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtspeech-everywhere-src-6.9.2/tests/auto/qtexttospeech/tst_qtexttospeech.cpp
 
new/qtspeech-everywhere-src-6.10.0/tests/auto/qtexttospeech/tst_qtexttospeech.cpp
--- 
old/qtspeech-everywhere-src-6.9.2/tests/auto/qtexttospeech/tst_qtexttospeech.cpp
    2025-08-18 03:29:35.000000000 +0200
+++ 
new/qtspeech-everywhere-src-6.10.0/tests/auto/qtexttospeech/tst_qtexttospeech.cpp
   2025-10-02 03:55:33.000000000 +0200
@@ -9,6 +9,7 @@
 #include <QAudioFormat>
 #include <QAudioDevice>
 #include <QAudioBuffer>
+#include <QElapsedTimer>
 #include <QOperatingSystemVersion>
 #include <QRegularExpression>
 #include <qttexttospeech-config.h>

Reply via email to