summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2025-05-17 08:22:13 +0200
committerStanislaw Halik <sthalik@misaki.pl>2025-05-17 08:22:13 +0200
commitd033bef1ded739c056243e673a9e3fbb6c57ef24 (patch)
tree792d228003d6a080efa487a327a54379efd22bf7
parent5f0fef82211aa659a31a4b49308c5ad8779d2a2b (diff)
fix build on Linux & Apple
-rw-r--r--.github/workflows/cmake.yml12
-rw-r--r--cmake/opentrack-qt.cmake10
-rw-r--r--compat/camera-names.cpp8
-rw-r--r--compat/process-list.cpp11
-rw-r--r--compat/process-list.hpp4
-rw-r--r--csv/csv.cpp11
-rw-r--r--qxt-mini/qxtglobalshortcut.cpp2
-rw-r--r--qxt-mini/qxtglobalshortcut_mac.cpp2
-rw-r--r--qxt-mini/qxtglobalshortcut_p.h6
-rw-r--r--qxt-mini/qxtglobalshortcut_x11.cpp2
-rw-r--r--tracker-linux-joystick/linux_joystick.cpp3
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);
}