diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2025-05-17 08:22:13 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2025-05-17 08:22:13 +0200 |
commit | d033bef1ded739c056243e673a9e3fbb6c57ef24 (patch) | |
tree | 792d228003d6a080efa487a327a54379efd22bf7 | |
parent | 5f0fef82211aa659a31a4b49308c5ad8779d2a2b (diff) |
fix build on Linux & Apple
-rw-r--r-- | .github/workflows/cmake.yml | 12 | ||||
-rw-r--r-- | cmake/opentrack-qt.cmake | 10 | ||||
-rw-r--r-- | compat/camera-names.cpp | 8 | ||||
-rw-r--r-- | compat/process-list.cpp | 11 | ||||
-rw-r--r-- | compat/process-list.hpp | 4 | ||||
-rw-r--r-- | csv/csv.cpp | 11 | ||||
-rw-r--r-- | qxt-mini/qxtglobalshortcut.cpp | 2 | ||||
-rw-r--r-- | qxt-mini/qxtglobalshortcut_mac.cpp | 2 | ||||
-rw-r--r-- | qxt-mini/qxtglobalshortcut_p.h | 6 | ||||
-rw-r--r-- | qxt-mini/qxtglobalshortcut_x11.cpp | 2 | ||||
-rw-r--r-- | tracker-linux-joystick/linux_joystick.cpp | 3 |
11 files changed, 43 insertions, 28 deletions
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fc53f6d7..6c8fac10 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -44,17 +44,21 @@ jobs: run: | sudo apt-get update sudo apt-get install libproc2-dev libopencv-dev libopencv-dev wine64-tools - sudo apt-get install qttools5-dev qtbase5-dev libqt5serialport5-dev qtbase5-private-dev + sudo apt-get install qt6-tools-dev qt6-serialport-dev qt6-base-private-dev if: matrix.os == 'ubuntu-latest' - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: - archives: qtbase qtimageformats qtgamepad qttools qtserialport qtmultimedia + dir: "${{ github.workspace }}/qt" + version: '6.8.3' + modules: qtserialport qtmultimedia qtimageformats + target: 'desktop' + use-official: true if: matrix.os != 'ubuntu-latest' - name: Configure - run: ${{matrix.cmake}} -GNinja -S ${{github.workspace}}/ -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DQt5_DIR=${{env.Qt5_DIR}} -DQt5Gui_DIR=${{env.Qt5_DIR}}/lib/cmake/Qt5Gui + run: ${{matrix.cmake}} -GNinja -S ${{github.workspace}}/ -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DQt6_DIR="${{env.QT_ROOT_DIR}}/lib/cmake/Qt6" - name: Build run: ${{matrix.cmake}} --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install diff --git a/cmake/opentrack-qt.cmake b/cmake/opentrack-qt.cmake index 51d48595..39aa6361 100644 --- a/cmake/opentrack-qt.cmake +++ b/cmake/opentrack-qt.cmake @@ -3,20 +3,20 @@ set(qt-required-components Core Network Widgets LinguistTools Gui) set(qt-optional-components SerialPort) set(qt-imported-targets Qt6::Core Qt6::Gui Qt6::Network Qt6::Widgets) if(APPLE) - list(APPEND qt-required-components "DBus") - list(APPEND qt-optional-components "Multimedia") - list(APPEND qt-imported-targets Qt6::DBus Qt6::Multimedia) + list(APPEND qt-required-components Multimedia) + list(APPEND qt-imported-targets Multimedia) endif() find_package(Qt6 REQUIRED COMPONENTS ${qt-required-components} QUIET) find_package(Qt6 COMPONENTS ${qt-optional-components} QUIET) + if(WIN32) find_package(Qt6Gui REQUIRED COMPONENTS QWindowsIntegrationPlugin) endif() -set(MY_QT_LIBS ${Qt6Core_LIBRARIES} ${Qt6Gui_LIBRARIES} ${Qt6Widgets_LIBRARIES} ${Qt6Network_LIBRARIES}) +set(MY_QT_LIBS Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network) if(APPLE) - list(APPEND MY_QT_LIBS ${Qt6Multimedia_LIBRARIES} ${Qt6DBus_LIBRARIES}) + list(APPEND MY_QT_LIBS Qt6::Multimedia) endif() function(otr_install_qt_libs) diff --git a/compat/camera-names.cpp b/compat/camera-names.cpp index b9511037..82776584 100644 --- a/compat/camera-names.cpp +++ b/compat/camera-names.cpp @@ -12,7 +12,8 @@ #endif #ifdef __APPLE__ -# include <QCameraInfo> +# include <QCameraDevice> +# include <QMediaDevices> #endif #ifdef __linux__ @@ -143,9 +144,8 @@ std::vector<std::tuple<QString, int>> get_camera_names() } #endif #ifdef __APPLE__ - QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); - for (const QCameraInfo &cameraInfo : cameras) - ret.push_back({ cameraInfo.description(), ret.size() }); + for (const QCameraDevice& camera_info : QMediaDevices::videoInputs()) + ret.push_back({ camera_info.description(), ret.size() }); #endif return ret; diff --git a/compat/process-list.cpp b/compat/process-list.cpp index 690c9e69..34c83b06 100644 --- a/compat/process-list.cpp +++ b/compat/process-list.cpp @@ -1,5 +1,9 @@ #include "process-list.hpp" +#include <vector> +#include <QStringList> +#include <QDebug> + #ifdef _WIN32 #include <windows.h> @@ -32,10 +36,13 @@ QStringList get_all_executable_names() #elif defined __APPLE__ +#include <sys/sysctl.h> +#include <libproc.h> + QStringList get_all_executable_names() { - std::vector<QString> ret; ret.reserve(512); - std::vector<int> vec; vec.reserve(512); + QStringList ret; ret.reserve(512); + QList<int> vec; vec.reserve(512); while (true) { diff --git a/compat/process-list.hpp b/compat/process-list.hpp index 361efa4f..323829bf 100644 --- a/compat/process-list.hpp +++ b/compat/process-list.hpp @@ -8,8 +8,6 @@ #pragma once #include "export.hpp" -#include <vector> -#include <QString> -#include <QList> +#include <QStringList> OTR_COMPAT_EXPORT QStringList get_all_executable_names(); diff --git a/csv/csv.cpp b/csv/csv.cpp index 7361fdd1..d899e11a 100644 --- a/csv/csv.cpp +++ b/csv/csv.cpp @@ -17,6 +17,7 @@ #include <QString> #include <QStringDecoder> #include <QFile> +#include <QByteArrayView> #include <QDebug> namespace { @@ -64,15 +65,19 @@ bool getGameData(int id, unsigned char* table, QString& gamename) return false; } QStringDecoder decoder{QStringConverter::Encoding::Utf8}; - QByteArray lineʹ; lineʹ.reserve(255); QStringList gameLine; gameLine.reserve(8); unsigned lineno = 0; + // TODO QIODevice::readLineInto() is Qt 6.9 - sh 20250515 + char buf[256]; - while (file.readLineInto(&lineʹ)) + while (auto sz = file.readLine(buf, sizeof(buf))) { - QString line = decoder.decode(lineʹ); + QString line = decoder.decode(QByteArrayView{buf, sz}); chomp(line); + if (line.isEmpty()) + continue; + gameLine = line.split(';', Qt::SplitBehaviorFlags::KeepEmptyParts); //qDebug() << "Column 0: " << gameLine.at(0); // No. diff --git a/qxt-mini/qxtglobalshortcut.cpp b/qxt-mini/qxtglobalshortcut.cpp index dec11dc4..38c97ffd 100644 --- a/qxt-mini/qxtglobalshortcut.cpp +++ b/qxt-mini/qxtglobalshortcut.cpp @@ -40,7 +40,7 @@ # pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif -QHash<QPair<quint32, quint32>, QxtGlobalShortcut*> QxtGlobalShortcutPrivate::shortcuts; +QMultiMap<QPair<quint32, quint32>, QxtGlobalShortcut*> QxtGlobalShortcutPrivate::shortcuts; void QxtGlobalShortcutPrivate::event_filter_installer::ensure_event_filter() { diff --git a/qxt-mini/qxtglobalshortcut_mac.cpp b/qxt-mini/qxtglobalshortcut_mac.cpp index c91d763d..571a6783 100644 --- a/qxt-mini/qxtglobalshortcut_mac.cpp +++ b/qxt-mini/qxtglobalshortcut_mac.cpp @@ -266,7 +266,7 @@ bool QxtGlobalShortcutPrivate::unregisterShortcut(quint32 nativeKey, quint32 nat return !UnregisterEventHotKey(ref); } bool QxtGlobalShortcutPrivate::nativeEventFilter(const QByteArray & eventType, - void *message, long *result) + void *message, qintptr *result) { return false; } diff --git a/qxt-mini/qxtglobalshortcut_p.h b/qxt-mini/qxtglobalshortcut_p.h index be708ba6..e6e77809 100644 --- a/qxt-mini/qxtglobalshortcut_p.h +++ b/qxt-mini/qxtglobalshortcut_p.h @@ -34,7 +34,7 @@ #include "qxtglobalshortcut.h" #include <QAbstractEventDispatcher> #include <QKeySequence> -#include <QHash> +#include <QMultiMap> #include <QAbstractNativeEventFilter> @@ -54,7 +54,7 @@ public: bool unsetShortcut(); static bool error; - bool nativeEventFilter(const QByteArray & eventType, void * message, long * result) override; + bool nativeEventFilter(const QByteArray & eventType, void * message, qintptr * result) override; static void activateShortcut(quint32 nativeKey, quint32 nativeMods, bool is_down); @@ -70,7 +70,7 @@ private: static bool registerShortcut(quint32 nativeKey, quint32 nativeMods); static bool unregisterShortcut(quint32 nativeKey, quint32 nativeMods); - static QHash<QPair<quint32, quint32>, QxtGlobalShortcut*> shortcuts; + static QMultiMap<QPair<quint32, quint32>, QxtGlobalShortcut*> shortcuts; }; #endif // QXTGLOBALSHORTCUT_P_H diff --git a/qxt-mini/qxtglobalshortcut_x11.cpp b/qxt-mini/qxtglobalshortcut_x11.cpp index 01894cfc..4ddf4f6b 100644 --- a/qxt-mini/qxtglobalshortcut_x11.cpp +++ b/qxt-mini/qxtglobalshortcut_x11.cpp @@ -339,7 +339,7 @@ QMutex keybinding::lock; bool QxtX11ErrorHandler::error = false; bool QxtGlobalShortcutPrivate::nativeEventFilter(const QByteArray & eventType, - void *message, long *) + void *message, qintptr *) { QxtX11Data x11; diff --git a/tracker-linux-joystick/linux_joystick.cpp b/tracker-linux-joystick/linux_joystick.cpp index 49718b52..2374451b 100644 --- a/tracker-linux-joystick/linux_joystick.cpp +++ b/tracker-linux-joystick/linux_joystick.cpp @@ -3,6 +3,7 @@ #include <QDir> #include <QFileInfo> #include <QVariant> +#include <QRegularExpression> // Discovery is done by searching for devices in the sys file system. // @@ -16,7 +17,7 @@ std::tuple<QString, QString> sysfsDeviceToJsDev(QFileInfo device) { QString symlink = device.symLinkTarget(); QString js_dev = QString("/dev/input/%1").arg(device.fileName()); - QRegExp sep(QString("[:.%1]").arg(QDir::separator())); + QRegularExpression sep(QString("[:.%1]").arg(QDir::separator())); QString device_id = symlink.section(sep, -6, -5); return ret(js_dev, device_id); } |