aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-02-08 16:17:12 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-02-28 16:52:41 +0100
commit4d761eaaf852f8d82925e111150f25c0dd5f3e83 (patch)
treeddb0b777bbf2a2e52b0e8c1ac889aa63c5d54aef
parenta2486060f78a42739d88a460b47f23b0c75b4a79 (diff)
Adapt to renaming of namespace QAudio->QtAudio
- Adapt the examples. - Create an alias into the module. - Add a hack to the signal manager for signals which maintain the old string-based signature. Task-number: PYSIDE-2497 Change-Id: I9db5e59851a2cb9161fdcecf87e78d980eda2045 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r--examples/multimedia/audiooutput/audiooutput.py22
-rw-r--r--examples/multimedia/audiosource/audiosource.py16
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt2
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml11
-rw-r--r--sources/pyside6/PySide6/glue/qtmultimedia.cpp5
-rw-r--r--sources/pyside6/libpyside/signalmanager.cpp10
6 files changed, 44 insertions, 22 deletions
diff --git a/examples/multimedia/audiooutput/audiooutput.py b/examples/multimedia/audiooutput/audiooutput.py
index 06d52f68a..5219bf652 100644
--- a/examples/multimedia/audiooutput/audiooutput.py
+++ b/examples/multimedia/audiooutput/audiooutput.py
@@ -10,7 +10,7 @@ from struct import pack
from PySide6.QtCore import (QByteArray, QIODevice, Qt, QSysInfo, QTimer,
qWarning, Slot)
-from PySide6.QtMultimedia import (QAudio, QAudioFormat,
+from PySide6.QtMultimedia import (QtAudio, QAudioFormat,
QAudioSink, QMediaDevices)
from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel,
QMainWindow, QPushButton, QSlider,
@@ -209,7 +209,7 @@ class AudioTest(QMainWindow):
@Slot()
def pull_timer_expired(self):
- if self.m_audioSink is not None and self.m_audioSink.state() != QAudio.StoppedState:
+ if self.m_audioSink is not None and self.m_audioSink.state() != QtAudio.StoppedState:
bytes_free = self.m_audioSink.bytesFree()
data = self.m_generator.read(bytes_free)
if data:
@@ -234,28 +234,28 @@ class AudioTest(QMainWindow):
@Slot()
def toggle_suspend_resume(self):
- if self.m_audioSink.state() == QAudio.SuspendedState:
+ if self.m_audioSink.state() == QtAudio.State.SuspendedState:
qWarning("status: Suspended, resume()")
self.m_audioSink.resume()
self.m_suspendResumeButton.setText(self.SUSPEND_LABEL)
- elif self.m_audioSink.state() == QAudio.ActiveState:
+ elif self.m_audioSink.state() == QtAudio.State.ActiveState:
qWarning("status: Active, suspend()")
self.m_audioSink.suspend()
self.m_suspendResumeButton.setText(self.RESUME_LABEL)
- elif self.m_audioSink.state() == QAudio.StoppedState:
+ elif self.m_audioSink.state() == QtAudio.State.StoppedState:
qWarning("status: Stopped, resume()")
self.m_audioSink.resume()
self.m_suspendResumeButton.setText(self.SUSPEND_LABEL)
- elif self.m_audioSink.state() == QAudio.IdleState:
+ elif self.m_audioSink.state() == QtAudio.State.IdleState:
qWarning("status: IdleState")
state_map = {
- QAudio.ActiveState: "ActiveState",
- QAudio.SuspendedState: "SuspendedState",
- QAudio.StoppedState: "StoppedState",
- QAudio.IdleState: "IdleState"}
+ QtAudio.State.ActiveState: "ActiveState",
+ QtAudio.State.SuspendedState: "SuspendedState",
+ QtAudio.State.StoppedState: "StoppedState",
+ QtAudio.State.IdleState: "IdleState"}
- @Slot("QAudio::State")
+ @Slot(QtAudio.State)
def handle_state_changed(self, state):
state = self.state_map.get(state, 'Unknown')
qWarning(f"state = {state}")
diff --git a/examples/multimedia/audiosource/audiosource.py b/examples/multimedia/audiosource/audiosource.py
index a78beb584..40046f0a3 100644
--- a/examples/multimedia/audiosource/audiosource.py
+++ b/examples/multimedia/audiosource/audiosource.py
@@ -19,7 +19,7 @@ from typing import Optional
import PySide6
from PySide6.QtCore import QByteArray, QMargins, Qt, Slot, qWarning
from PySide6.QtGui import QPainter, QPalette
-from PySide6.QtMultimedia import QAudio, QAudioDevice, QAudioFormat, QAudioSource, QMediaDevices
+from PySide6.QtMultimedia import QtAudio, QAudioDevice, QAudioFormat, QAudioSource, QMediaDevices
from PySide6.QtWidgets import (QApplication, QComboBox, QPushButton, QSlider, QVBoxLayout,
QWidget, QLabel)
@@ -164,10 +164,10 @@ class InputTest(QWidget):
self.m_audio_info = AudioInfo(format)
self.m_audio_input = QAudioSource(device_info, format)
- initial_volume = QAudio.convertVolume(
+ initial_volume = QtAudio.convertVolume(
self.m_audio_input.volume(),
- QAudio.LinearVolumeScale,
- QAudio.LogarithmicVolumeScale,
+ QtAudio.LinearVolumeScale,
+ QtAudio.LogarithmicVolumeScale,
)
self.m_volume_slider.setValue(int(round(initial_volume * 100)))
self.toggle_mode()
@@ -196,10 +196,10 @@ class InputTest(QWidget):
def toggle_suspend(self):
# toggle suspend/resume
state = self.m_audio_input.state()
- if (state == QAudio.SuspendedState) or (state == QAudio.StoppedState):
+ if (state == QtAudio.SuspendedState) or (state == QtAudio.StoppedState):
self.m_audio_input.resume()
self.m_suspend_resume_button.setText("Suspend recording")
- elif state == QAudio.ActiveState:
+ elif state == QtAudio.ActiveState:
self.m_audio_input.suspend()
self.m_suspend_resume_button.setText("Resume recording")
# else no-op
@@ -212,8 +212,8 @@ class InputTest(QWidget):
@Slot(int)
def slider_changed(self, value):
- linearVolume = QAudio.convertVolume(
- value / float(100), QAudio.LogarithmicVolumeScale, QAudio.LinearVolumeScale
+ linearVolume = QtAudio.convertVolume(
+ value / float(100), QtAudio.LogarithmicVolumeScale, QtAudio.LinearVolumeScale
)
self.m_audio_input.setVolume(linearVolume)
diff --git a/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
index 5cac97ca9..61f52cc2b 100644
--- a/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
+++ b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
@@ -12,7 +12,6 @@ ${QtMultimedia_GEN_DIR}/qaudioinput_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiooutput_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiosink_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiosource_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qaudio_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcameraformat_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcameradevice_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcamera_wrapper.cpp
@@ -29,6 +28,7 @@ ${QtMultimedia_GEN_DIR}/qmediatimerange_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediatimerange_interval_wrapper.cpp
${QtMultimedia_GEN_DIR}/qscreencapture_wrapper.cpp
${QtMultimedia_GEN_DIR}/qsoundeffect_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qtaudio_wrapper.cpp
${QtMultimedia_GEN_DIR}/qtvideo_wrapper.cpp
${QtMultimedia_GEN_DIR}/qvideoframe_wrapper.cpp
${QtMultimedia_GEN_DIR}/qvideoframeformat_wrapper.cpp
diff --git a/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
index 79539c0ed..dc3534299 100644
--- a/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
+++ b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
@@ -8,10 +8,13 @@
<load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
<load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
- <namespace-type name="QAudio">
+ <namespace-type name="QtAudio">
<enum-type name="Error"/>
<enum-type name="State"/>
<enum-type name="VolumeScale"/>
+ <inject-code class="target" position="end"
+ file="../glue/qtmultimedia.cpp"
+ snippet="qtaudio-namespace-compatibility-alias"/>
</namespace-type>
<namespace-type name="QtVideo" since="6.7">
@@ -61,6 +64,9 @@
</modify-argument>
</modify-function>
<modify-function signature="stop()" allow-thread="true"/>
+ <!-- FIXME PYSIDE 7: Remove this (QT6_DECL_NEW_OVERLOAD_TAIL) -->
+ <declare-function signature="state()const" return-type="QtAudio::State"/>
+ <declare-function signature="error()const" return-type="QtAudio::Error"/>
</object-type>
<object-type name="QAudioSink">
@@ -75,6 +81,9 @@
</modify-argument>
</modify-function>
<modify-function signature="stop()" allow-thread="true"/>
+ <!-- FIXME PYSIDE 7: Remove this (QT6_DECL_NEW_OVERLOAD_TAIL) -->
+ <declare-function signature="state()const" return-type="QtAudio::State"/>
+ <declare-function signature="error()const" return-type="QtAudio::Error"/>
</object-type>
<object-type name="QCamera">
diff --git a/sources/pyside6/PySide6/glue/qtmultimedia.cpp b/sources/pyside6/PySide6/glue/qtmultimedia.cpp
index 3d46619fd..d193b1bd3 100644
--- a/sources/pyside6/PySide6/glue/qtmultimedia.cpp
+++ b/sources/pyside6/PySide6/glue/qtmultimedia.cpp
@@ -20,3 +20,8 @@ const unsigned char *data = %CPPSELF.%FUNCTION_NAME<unsigned char>();
const auto size = %CPPSELF.byteCount();
%PYARG_0 = Shiboken::Buffer::newObject(data, size);
// @snippet qaudiobuffer-const-data
+
+// @snippet qtaudio-namespace-compatibility-alias
+Py_INCREF(pyType);
+PyModule_AddObject(module, "QAudio", reinterpret_cast<PyObject *>(pyType));
+// @snippet qtaudio-namespace-compatibility-alias
diff --git a/sources/pyside6/libpyside/signalmanager.cpp b/sources/pyside6/libpyside/signalmanager.cpp
index b4e1bb487..1738fa926 100644
--- a/sources/pyside6/libpyside/signalmanager.cpp
+++ b/sources/pyside6/libpyside/signalmanager.cpp
@@ -30,6 +30,8 @@
#include <limits>
#include <memory>
+using namespace Qt::StringLiterals;
+
#if QSLOT_CODE != 1 || QSIGNAL_CODE != 2
#error QSLOT_CODE and/or QSIGNAL_CODE changed! change the hardcoded stuff to the correct value!
#endif
@@ -715,7 +717,13 @@ static PyObject *parseArguments(const QList<QByteArray>& paramTypes, void **args
for (qsizetype i = 0; i < argsSize; ++i) {
void *data = args[i+1];
- const char *dataType = paramTypes[i].constData();
+ auto param = paramTypes.at(i);
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+ // Qt 6.7 renamed namespace "QAudio"->"QtAudio" except for signals
+ if (param.startsWith("QAudio::"_ba))
+ param.insert(1, 't');
+#endif
+ const char *dataType = param.constData();
Shiboken::Conversions::SpecificConverter converter(dataType);
if (converter) {
PyTuple_SET_ITEM(preparedArgs, i, converter.toPython(data));