Skip to content

Commit a9f8fa0

Browse files
committed
Port away from QtCore5Compat
Use QStringDecoder instead of the legacy QTextDecoder, if Qt6 is new enough. QStringDecoder::decoderForHtml() is available since Qt 6.4
1 parent b842860 commit a9f8fa0

File tree

7 files changed

+32
-16
lines changed

7 files changed

+32
-16
lines changed

.github/workflows/build-distros.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ jobs:
3434
sed -i 's/^Types: deb/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
3535
DEBIAN_FRONTEND=noninteractive apt-get -qq update
3636
DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
37-
DEBIAN_FRONTEND=noninteractive apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
37+
DEBIAN_FRONTEND=noninteractive apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev
3838
- name: ubuntu-22.04
3939
image: ubuntu:22.04
4040
setup_script: |
4141
sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
4242
DEBIAN_FRONTEND=noninteractive apt-get -qq update
4343
DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
44-
DEBIAN_FRONTEND=noninteractive apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
44+
DEBIAN_FRONTEND=noninteractive apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev
4545
- name: debian-unstable
4646
image: debian:unstable
4747
setup_script: |
@@ -54,15 +54,15 @@ jobs:
5454
echo 'deb-src http://deb.debian.org/debian testing main' >> /etc/apt/sources.list
5555
apt-get -qq update
5656
apt-get -yqq build-dep mlt
57-
apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
57+
apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev
5858
- name: debian-stable
5959
image: debian:stable
6060
setup_script: |
6161
echo 'deb-src http://deb.debian.org/debian stable main\ndeb-src http://deb.debian.org/debian stable-updates main' >> /etc/apt/sources.list
6262
echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list
6363
apt-get -qq update
6464
apt-get -yqq build-dep mlt
65-
apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
65+
apt-get -yqq install cmake qt6-base-dev libqt6svg6-dev
6666
- name: fedora-42
6767
image: fedora:42
6868
setup_script: |
@@ -71,7 +71,7 @@ jobs:
7171
yasm gavl-devel libsamplerate-devel libxml2-devel \
7272
ladspa-devel jack-audio-connection-kit-devel sox-devel \
7373
SDL2-devel fftw-devel frei0r-devel gtk2-devel libexif-devel \
74-
qt6-qtbase-devel qt6-qt5compat-devel qt6-qtsvg-devel \
74+
qt6-qtbase-devel qt6-qtsvg-devel \
7575
libtheora-devel libvorbis-devel libvdpau-devel \
7676
libsoup-devel liboil-devel python-devel alsa-lib \
7777
pulseaudio-libs-devel gcc-c++ cmake ffmpeg-free-devel \
@@ -84,7 +84,7 @@ jobs:
8484
yasm gavl-devel libsamplerate-devel libxml2-devel \
8585
ladspa-devel jack-audio-connection-kit-devel sox-devel \
8686
SDL2-devel fftw-devel frei0r-devel gtk2-devel libexif-devel \
87-
qt6-qtbase-devel qt6-qt5compat-devel qt6-qtsvg-devel \
87+
qt6-qtbase-devel qt6-qtsvg-devel \
8888
libtheora-devel libvorbis-devel libvdpau-devel \
8989
libsoup-devel liboil-devel python-devel alsa-lib \
9090
pulseaudio-libs-devel gcc-c++ cmake ffmpeg-free-devel \

.github/workflows/build-msys2-mingw64.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ jobs:
4949
mingw-w64-x86_64-potrace
5050
mingw-w64-x86_64-python-pip
5151
mingw-w64-x86_64-qt5-base
52-
mingw-w64-x86_64-qt6-5compat
5352
mingw-w64-x86_64-qt6-base
5453
mingw-w64-x86_64-qt6-svg
5554
mingw-w64-x86_64-rubberband

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,10 @@ endif()
306306
# It is necessary to look for Qt6 before Qt5, otherwise there will
307307
# be a conflict with the targets in case both are enabled
308308
if(MOD_QT6)
309-
find_package(Qt6 REQUIRED COMPONENTS Core Gui Xml SvgWidgets Core5Compat)
309+
find_package(Qt6 REQUIRED COMPONENTS Core Gui Xml SvgWidgets)
310+
if(Qt6_VERSION VERSION_LESS 6.4.0)
311+
find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
312+
endif()
310313
list(APPEND MLT_SUPPORTED_COMPONENTS qt6)
311314
endif()
312315

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ FROM base AS build
1111
RUN apt-get install -yqq wget git automake autoconf libtool intltool g++ yasm nasm \
1212
swig libgavl-dev libsamplerate0-dev libxml2-dev ladspa-sdk libjack-dev \
1313
libsox-dev libsdl2-dev libgtk2.0-dev libsoup2.4-dev \
14-
qt6-base-dev qt6-5compat-dev qt6-svg-dev libarchive-dev libmp3lame-dev \
14+
qt6-base-dev qt6-svg-dev libarchive-dev libmp3lame-dev \
1515
libexif-dev libtheora-dev libvorbis-dev python3-dev cmake xutils-dev \
1616
libegl1-mesa-dev libeigen3-dev libfftw3-dev libvdpau-dev meson ninja-build
1717

@@ -29,7 +29,7 @@ FROM base
2929
RUN apt-get install -yqq dumb-init \
3030
libsamplerate0 libxml2 libjack0 \
3131
libsdl2-2.0-0 libgtk2.0-0 libsoup2.4-1 \
32-
libqt6core5compat6 libqt6svgwidgets6 libqt6xml6 qt6-image-formats-plugins libarchive13 \
32+
libqt6svgwidgets6 libqt6xml6 qt6-image-formats-plugins libarchive13 \
3333
libtheora0 libvorbis0a python3 \
3434
libegl1 libfftw3-double3 libvdpau1 \
3535
# Additional runtime libs \

src/modules/qt/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,12 @@ function(mlt_add_qt_module ARG_TARGET)
6868
if(ARG_QT_VERSION EQUAL 6)
6969
target_link_libraries(${ARG_TARGET} PRIVATE
7070
Qt6::SvgWidgets
71-
Qt6::Core5Compat
7271
)
72+
if(Qt6Core5Compat_FOUND)
73+
target_link_libraries(${ARG_TARGET} PRIVATE
74+
Qt6::Core5Compat
75+
)
76+
endif()
7377
else()
7478
target_link_libraries(${ARG_TARGET} PRIVATE
7579
Qt${ARG_QT_VERSION}::Svg

src/modules/qt/filter_qtext.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727
#include <QTextDocument>
2828
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
2929
#include <QTextCodec>
30-
#else
30+
#elif QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
3131
#include <QtCore5Compat/QTextCodec>
32+
#else
33+
#include <QStringDecoder>
3234
#endif
3335

3436
#include "typewriter.h"
@@ -394,10 +396,15 @@ static QTextDocument *get_rich_text(mlt_properties properties, double width, dou
394396
QFile file(resource);
395397
if (file.open(QFile::ReadOnly)) {
396398
QByteArray data = file.readAll();
397-
QTextCodec *codec = QTextCodec::codecForHtml(data);
398399
doc = new QTextDocument;
399400
doc->setPageSize(QSizeF(width, height));
401+
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
402+
QTextCodec *codec = QTextCodec::codecForHtml(data);
400403
doc->setHtml(codec->toUnicode(data));
404+
#else
405+
QStringDecoder decoder = QStringDecoder::decoderForHtml(data);
406+
doc->setHtml(decoder(data));
407+
#endif
401408
mlt_properties_set_data(properties,
402409
"QTextDocument",
403410
doc,

src/modules/qt/producer_qtext.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
#include <QTextCodec>
3333
#include <QTextDecoder>
3434
#else
35-
#include <QtCore5Compat/QTextCodec>
36-
#include <QtCore5Compat/QTextDecoder>
35+
#include <QStringDecoder>
3736
#endif
3837

3938
static void close_qimg(void *qimg)
@@ -161,12 +160,16 @@ static void generate_qpath(mlt_properties producer_properties)
161160
// Make the path empty
162161
*qPath = QPainterPath();
163162
qPath->setFillRule(Qt::WindingFill);
164-
163+
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
165164
// Get the strings to display
166165
QTextCodec *codec = QTextCodec::codecForName(encoding);
167166
QTextDecoder *decoder = codec->makeDecoder();
168167
QString s = decoder->toUnicode(text);
169168
delete decoder;
169+
#else
170+
auto decoder = QStringDecoder(encoding);
171+
QString s = decoder(text);
172+
#endif
170173
QStringList lines = s.split("\n");
171174

172175
// Configure the font

0 commit comments

Comments
 (0)