Qt: Compatibility with Qt 6.7

Dunno why updating packages is taking so long...
This commit is contained in:
Stenzek 2024-10-26 15:54:04 +10:00
parent 62de181e97
commit 82e9bcc55f
No known key found for this signature in database
6 changed files with 117 additions and 99 deletions

View File

@ -455,95 +455,95 @@ jobs:
name: "linux-x64-sse2-appimage" name: "linux-x64-sse2-appimage"
path: "DuckStation-x64-SSE2.AppImage" path: "DuckStation-x64-SSE2.AppImage"
# Disabled until KDE release the Qt 6.8 SDK
#linux-flatpak-build: linux-flatpak-build:
# name: Linux Flatpak Build name: Linux Flatpak Build
# runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
# container: container:
# image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.7 image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.7
# options: --privileged options: --privileged
# timeout-minutes: 120 timeout-minutes: 120
# steps: steps:
# - uses: actions/checkout@v4.1.6 - uses: actions/checkout@v4.1.6
# with: with:
# fetch-depth: 0 fetch-depth: 0
# set-safe-directory: ${{ env.GITHUB_WORKSPACE }} set-safe-directory: ${{ env.GITHUB_WORKSPACE }}
#
# # Work around container ownership issue # Work around container ownership issue
# - name: Set Safe Directory - name: Set Safe Directory
# shell: bash shell: bash
# run: git config --global --add safe.directory "*" run: git config --global --add safe.directory "*"
#
# - name: Initialize Build Tag - name: Initialize Build Tag
# run: | run: |
# echo '#pragma once' > src/scmversion/tag.h echo '#pragma once' > src/scmversion/tag.h
#
# - name: Set Build Tags - name: Set Build Tags
# if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev' if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
# run: | run: |
# echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
#
# - name: Tag as Preview Release - name: Tag as Preview Release
# if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
# run: | run: |
# echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
#
# - name: Tag as Rolling Release - name: Tag as Rolling Release
# if: github.ref == 'refs/heads/dev' if: github.ref == 'refs/heads/dev'
# run: | run: |
# echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
#
# - name: Download Patch Archives - name: Download Patch Archives
# shell: bash shell: bash
# run: | run: |
# cd data/resources cd data/resources
# curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip" curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
# curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip" curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"
#
# - name: Generate AppStream XML - name: Generate AppStream XML
# run: | run: |
# scripts/generate-metainfo.sh scripts/flatpak scripts/generate-metainfo.sh scripts/flatpak
# cat scripts/flatpak/org.duckstation.DuckStation.metainfo.xml cat scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
#
# - name: Validate AppStream XML - name: Validate AppStream XML
# run: flatpak-builder-lint appstream scripts/flatpak/org.duckstation.DuckStation.metainfo.xml run: flatpak-builder-lint appstream scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
#
# - name: Validate Manifest - name: Validate Manifest
# run: flatpak-builder-lint manifest scripts/flatpak/org.duckstation.DuckStation.yaml run: flatpak-builder-lint manifest scripts/flatpak/org.duckstation.DuckStation.yaml
#
# - name: Build Flatpak - name: Build Flatpak
# uses: flathub-infra/flatpak-github-actions/flatpak-builder@23796715b3dfa4c86ddf50cf29c3cc8b3c82dca8 uses: flathub-infra/flatpak-github-actions/flatpak-builder@23796715b3dfa4c86ddf50cf29c3cc8b3c82dca8
# with: with:
# bundle: duckstation-x64.flatpak bundle: duckstation-x64.flatpak
# upload-artifact: false upload-artifact: false
# manifest-path: scripts/flatpak/org.duckstation.DuckStation.yaml manifest-path: scripts/flatpak/org.duckstation.DuckStation.yaml
# arch: x86_64 arch: x86_64
# build-bundle: true build-bundle: true
# verbose: true verbose: true
# mirror-screenshots-url: https://dl.flathub.org/media mirror-screenshots-url: https://dl.flathub.org/media
# branch: stable branch: stable
# cache: true cache: true
# restore-cache: true restore-cache: true
# cache-key: flatpak-x64-${{ hashFiles('scripts/flatpak/**/*.yaml') }} cache-key: flatpak-x64-${{ hashFiles('scripts/flatpak/**/*.yaml') }}
#
# - name: Validate Build - name: Validate Build
# run: | run: |
# flatpak-builder-lint repo repo flatpak-builder-lint repo repo
#
# - name: Push To Flathub Stable - name: Push To Flathub Stable
# if: github.ref == 'refs/heads/dev' if: github.ref == 'refs/heads/dev'
# uses: flathub-infra/flatpak-github-actions/flat-manager@b6c92176b7f578aedd80cac74cd8f0336f618e89 uses: flathub-infra/flatpak-github-actions/flat-manager@b6c92176b7f578aedd80cac74cd8f0336f618e89
# with: with:
# flat-manager-url: https://hub.flathub.org/ flat-manager-url: https://hub.flathub.org/
# repository: stable repository: stable
# token: ${{ secrets.FLATHUB_STABLE_TOKEN }} token: ${{ secrets.FLATHUB_STABLE_TOKEN }}
# build-log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} build-log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
#
# - name: Upload Flatpak - name: Upload Flatpak
# uses: actions/upload-artifact@v4.3.3 uses: actions/upload-artifact@v4.3.3
# with: with:
# name: "linux-flatpak" name: "linux-flatpak"
# path: "duckstation-x64.flatpak" path: "duckstation-x64.flatpak"
macos-build: macos-build:
@ -622,8 +622,7 @@ jobs:
create-release: create-release:
name: Create Release name: Create Release
#needs: [windows-x64-build, windows-x64-sse2-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, linux-flatpak-build, macos-build] needs: [windows-x64-build, windows-x64-sse2-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, linux-flatpak-build, macos-build]
needs: [windows-x64-build, windows-x64-sse2-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, macos-build]
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev' if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
steps: steps:
@ -652,7 +651,7 @@ jobs:
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
./artifacts/linux-x64-appimage/DuckStation-x64.AppImage ./artifacts/linux-x64-appimage/DuckStation-x64.AppImage
./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage ./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage
#./artifacts/linux-flatpak/duckstation-x64.flatpak ./artifacts/linux-flatpak/duckstation-x64.flatpak
./artifacts/macos/duckstation-mac-release.zip ./artifacts/macos/duckstation-mac-release.zip
- name: Create Rolling Release - name: Create Rolling Release
@ -672,6 +671,6 @@ jobs:
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
./artifacts/linux-x64-appimage/DuckStation-x64.AppImage ./artifacts/linux-x64-appimage/DuckStation-x64.AppImage
./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage ./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage
#./artifacts/linux-flatpak/duckstation-x64.flatpak ./artifacts/linux-flatpak/duckstation-x64.flatpak
./artifacts/macos/duckstation-mac-release.zip ./artifacts/macos/duckstation-mac-release.zip

View File

@ -20,7 +20,7 @@ find_package(lunasvg 2.4.1 REQUIRED)
find_package(cpuinfo REQUIRED) find_package(cpuinfo REQUIRED)
find_package(DiscordRPC 3.4.0 REQUIRED) find_package(DiscordRPC 3.4.0 REQUIRED)
find_package(SoundTouch 2.3.3 REQUIRED) find_package(SoundTouch 2.3.3 REQUIRED)
find_package(libzip 1.11.1 REQUIRED) find_package(libzip 1.10.1 REQUIRED)
if(NOT WIN32) if(NOT WIN32)
find_package(CURL REQUIRED) find_package(CURL REQUIRED)
@ -40,7 +40,7 @@ if(ENABLE_WAYLAND)
endif() endif()
if(BUILD_QT_FRONTEND) if(BUILD_QT_FRONTEND)
find_package(Qt6 6.8.0 COMPONENTS Core Gui Widgets LinguistTools REQUIRED) find_package(Qt6 6.7.0 COMPONENTS Core Gui Widgets LinguistTools REQUIRED)
endif() endif()
find_package(Shaderc REQUIRED) find_package(Shaderc REQUIRED)

View File

@ -3,14 +3,14 @@
app-id: "org.duckstation.DuckStation" app-id: "org.duckstation.DuckStation"
runtime: "org.kde.Platform" runtime: "org.kde.Platform"
runtime-version: "6.8" runtime-version: "6.7"
sdk: "org.kde.Sdk" sdk: "org.kde.Sdk"
sdk-extensions: sdk-extensions:
- "org.freedesktop.Sdk.Extension.llvm17" - "org.freedesktop.Sdk.Extension.llvm17"
add-extensions: add-extensions:
"org.freedesktop.Platform.ffmpeg-full": "org.freedesktop.Platform.ffmpeg-full":
directory: "lib/ffmpeg" directory: "lib/ffmpeg"
version: "24.08" version: "23.08"
add-ld-path: "." add-ld-path: "."
autodownload: true autodownload: true

View File

@ -294,7 +294,7 @@ void LogWindow::logCallback(void* pUserParam, const char* channelName, const cha
const QLatin1StringView qchannel((level <= Log::Level::Warning) ? functionName : channelName); const QLatin1StringView qchannel((level <= Log::Level::Warning) ? functionName : channelName);
if (QThread::isMainThread()) if (EmuThread::isMainThread())
{ {
this_ptr->appendMessage(qchannel, static_cast<u32>(level), qmessage); this_ptr->appendMessage(qchannel, static_cast<u32>(level), qmessage);
} }

View File

@ -129,6 +129,20 @@ EmuThread::EmuThread(QThread* ui_thread) : QThread(), m_ui_thread(ui_thread)
EmuThread::~EmuThread() = default; EmuThread::~EmuThread() = default;
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
bool EmuThread::isMainThread()
{
return (QThread::currentThread() == g_emu_thread->m_ui_thread);
}
bool EmuThread::isCurrentThread() const
{
return QThread::currentThread() == this;
}
#endif
void QtHost::RegisterTypes() void QtHost::RegisterTypes()
{ {
// Register any standard types we need elsewhere // Register any standard types we need elsewhere
@ -1741,7 +1755,7 @@ void EmuThread::queueAuxiliaryRenderWindowInputEvent(Host::AuxiliaryRenderWindow
Host::AuxiliaryRenderWindowEventParam param2, Host::AuxiliaryRenderWindowEventParam param2,
Host::AuxiliaryRenderWindowEventParam param3) Host::AuxiliaryRenderWindowEventParam param3)
{ {
DebugAssert(QThread::isMainThread()); DebugAssert(isMainThread());
QMetaObject::invokeMethod(this, "processAuxiliaryRenderWindowInputEvent", Qt::QueuedConnection, QMetaObject::invokeMethod(this, "processAuxiliaryRenderWindowInputEvent", Qt::QueuedConnection,
Q_ARG(void*, userdata), Q_ARG(quint32, static_cast<quint32>(event)), Q_ARG(void*, userdata), Q_ARG(quint32, static_cast<quint32>(event)),
Q_ARG(quint32, param1.uint_param), Q_ARG(quint32, param2.uint_param), Q_ARG(quint32, param1.uint_param), Q_ARG(quint32, param2.uint_param),

View File

@ -89,6 +89,11 @@ public:
static void start(); static void start();
static void stop(); static void stop();
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
static bool isMainThread();
bool isCurrentThread() const;
#endif
ALWAYS_INLINE QEventLoop* getEventLoop() const { return m_event_loop; } ALWAYS_INLINE QEventLoop* getEventLoop() const { return m_event_loop; }
ALWAYS_INLINE bool isFullscreen() const { return m_is_fullscreen; } ALWAYS_INLINE bool isFullscreen() const { return m_is_fullscreen; }