diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-02-08 16:17:12 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-02-28 16:52:41 +0100 |
commit | 4d761eaaf852f8d82925e111150f25c0dd5f3e83 (patch) | |
tree | ddb0b777bbf2a2e52b0e8c1ac889aa63c5d54aef | |
parent | a2486060f78a42739d88a460b47f23b0c75b4a79 (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.py | 22 | ||||
-rw-r--r-- | examples/multimedia/audiosource/audiosource.py | 16 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt | 2 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml | 11 | ||||
-rw-r--r-- | sources/pyside6/PySide6/glue/qtmultimedia.cpp | 5 | ||||
-rw-r--r-- | sources/pyside6/libpyside/signalmanager.cpp | 10 |
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)); |