From cbb4dd8f22892e2a2bee264940e6db923dd2af60 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 16 Nov 2025 19:10:13 +0100 Subject: [PATCH 1/4] Qt: forward declare gui_settings --- rpcs3/rpcs3qt/elf_memory_dumping_dialog.cpp | 5 +++-- rpcs3/rpcs3qt/elf_memory_dumping_dialog.h | 3 ++- rpcs3/rpcs3qt/shortcut_dialog.cpp | 1 + rpcs3/rpcs3qt/shortcut_dialog.h | 4 ++-- rpcs3/rpcs3qt/shortcut_handler.cpp | 1 + rpcs3/rpcs3qt/shortcut_handler.h | 3 ++- rpcs3/rpcs3qt/shortcut_settings.cpp | 1 + rpcs3/rpcs3qt/shortcut_settings.h | 4 +++- rpcs3/rpcs3qt/vfs_dialog_path_widget.cpp | 1 + rpcs3/rpcs3qt/vfs_dialog_path_widget.h | 4 +++- rpcs3/rpcs3qt/vfs_dialog_tab.cpp | 1 + rpcs3/rpcs3qt/vfs_dialog_usb_tab.cpp | 1 + rpcs3/rpcs3qt/vfs_dialog_usb_tab.h | 4 ++-- 13 files changed, 23 insertions(+), 10 deletions(-) diff --git a/rpcs3/rpcs3qt/elf_memory_dumping_dialog.cpp b/rpcs3/rpcs3qt/elf_memory_dumping_dialog.cpp index c191b878de..8a6ce43423 100644 --- a/rpcs3/rpcs3qt/elf_memory_dumping_dialog.cpp +++ b/rpcs3/rpcs3qt/elf_memory_dumping_dialog.cpp @@ -1,8 +1,9 @@ #include "elf_memory_dumping_dialog.h" -#include "Emu/Cell/SPUThread.h" - +#include "gui_settings.h" #include "qt_utils.h" +#include "Emu/Cell/SPUThread.h" + #include #include #include diff --git a/rpcs3/rpcs3qt/elf_memory_dumping_dialog.h b/rpcs3/rpcs3qt/elf_memory_dumping_dialog.h index 3c6d7fe59f..49c85d1f99 100644 --- a/rpcs3/rpcs3qt/elf_memory_dumping_dialog.h +++ b/rpcs3/rpcs3qt/elf_memory_dumping_dialog.h @@ -1,7 +1,6 @@ #pragma once #include "util/types.hpp" -#include "gui_settings.h" #include #include @@ -9,6 +8,8 @@ #include +class gui_settings; + class elf_memory_dumping_dialog : public QDialog { Q_OBJECT diff --git a/rpcs3/rpcs3qt/shortcut_dialog.cpp b/rpcs3/rpcs3qt/shortcut_dialog.cpp index 1f36c69fd8..2f8614a94a 100644 --- a/rpcs3/rpcs3qt/shortcut_dialog.cpp +++ b/rpcs3/rpcs3qt/shortcut_dialog.cpp @@ -1,6 +1,7 @@ #include "shortcut_dialog.h" #include "ui_shortcut_dialog.h" #include "shortcut_settings.h" +#include "gui_settings.h" #include #include diff --git a/rpcs3/rpcs3qt/shortcut_dialog.h b/rpcs3/rpcs3qt/shortcut_dialog.h index b13ddb94ff..f5a9e7b431 100644 --- a/rpcs3/rpcs3qt/shortcut_dialog.h +++ b/rpcs3/rpcs3qt/shortcut_dialog.h @@ -1,9 +1,9 @@ #pragma once -#include "gui_settings.h" - #include +class gui_settings; + namespace Ui { class shortcut_dialog; diff --git a/rpcs3/rpcs3qt/shortcut_handler.cpp b/rpcs3/rpcs3qt/shortcut_handler.cpp index ed1dbecffd..f924cd2a07 100644 --- a/rpcs3/rpcs3qt/shortcut_handler.cpp +++ b/rpcs3/rpcs3qt/shortcut_handler.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "shortcut_handler.h" +#include "gui_settings.h" LOG_CHANNEL(shortcut_log, "Shortcuts"); diff --git a/rpcs3/rpcs3qt/shortcut_handler.h b/rpcs3/rpcs3qt/shortcut_handler.h index d884681563..c8c4ea84af 100644 --- a/rpcs3/rpcs3qt/shortcut_handler.h +++ b/rpcs3/rpcs3qt/shortcut_handler.h @@ -1,6 +1,5 @@ #pragma once -#include "gui_settings.h" #include "shortcut_settings.h" #include @@ -8,6 +7,8 @@ #include +class gui_settings; + class shortcut_handler : public QObject { Q_OBJECT diff --git a/rpcs3/rpcs3qt/shortcut_settings.cpp b/rpcs3/rpcs3qt/shortcut_settings.cpp index e1c4d54038..039f493dae 100644 --- a/rpcs3/rpcs3qt/shortcut_settings.cpp +++ b/rpcs3/rpcs3qt/shortcut_settings.cpp @@ -1,4 +1,5 @@ #include "shortcut_settings.h" +#include "gui_settings.h" using namespace gui::shortcuts; diff --git a/rpcs3/rpcs3qt/shortcut_settings.h b/rpcs3/rpcs3qt/shortcut_settings.h index bc4e95925e..db6458accb 100644 --- a/rpcs3/rpcs3qt/shortcut_settings.h +++ b/rpcs3/rpcs3qt/shortcut_settings.h @@ -1,9 +1,11 @@ #pragma once -#include "gui_settings.h" +#include "gui_save.h" #include +class gui_settings; + namespace gui { namespace shortcuts diff --git a/rpcs3/rpcs3qt/vfs_dialog_path_widget.cpp b/rpcs3/rpcs3qt/vfs_dialog_path_widget.cpp index f7d2f81dd9..f5ceac8aee 100644 --- a/rpcs3/rpcs3qt/vfs_dialog_path_widget.cpp +++ b/rpcs3/rpcs3qt/vfs_dialog_path_widget.cpp @@ -1,4 +1,5 @@ #include "vfs_dialog_path_widget.h" +#include "gui_settings.h" #include #include diff --git a/rpcs3/rpcs3qt/vfs_dialog_path_widget.h b/rpcs3/rpcs3qt/vfs_dialog_path_widget.h index 698d090509..bae3cfa46c 100644 --- a/rpcs3/rpcs3qt/vfs_dialog_path_widget.h +++ b/rpcs3/rpcs3qt/vfs_dialog_path_widget.h @@ -1,12 +1,14 @@ #pragma once -#include "gui_settings.h" +#include "gui_save.h" #include #include #include +class gui_settings; + namespace cfg { class string; diff --git a/rpcs3/rpcs3qt/vfs_dialog_tab.cpp b/rpcs3/rpcs3qt/vfs_dialog_tab.cpp index 93c640b84c..ca96879ea6 100644 --- a/rpcs3/rpcs3qt/vfs_dialog_tab.cpp +++ b/rpcs3/rpcs3qt/vfs_dialog_tab.cpp @@ -1,4 +1,5 @@ #include "vfs_dialog_tab.h" +#include "gui_settings.h" #include "Utilities/Config.h" vfs_dialog_tab::vfs_dialog_tab(const QString& name, gui_save list_location, cfg::string* cfg_node, std::shared_ptr _gui_settings, QWidget* parent) diff --git a/rpcs3/rpcs3qt/vfs_dialog_usb_tab.cpp b/rpcs3/rpcs3qt/vfs_dialog_usb_tab.cpp index 93fadf8ece..a10eef0080 100644 --- a/rpcs3/rpcs3qt/vfs_dialog_usb_tab.cpp +++ b/rpcs3/rpcs3qt/vfs_dialog_usb_tab.cpp @@ -1,6 +1,7 @@ #include "vfs_dialog_usb_tab.h" #include "vfs_dialog_usb_input.h" #include "table_item_delegate.h" +#include "gui_settings.h" #include "Utilities/Config.h" #include diff --git a/rpcs3/rpcs3qt/vfs_dialog_usb_tab.h b/rpcs3/rpcs3qt/vfs_dialog_usb_tab.h index 02d7a25c83..8082083cc6 100644 --- a/rpcs3/rpcs3qt/vfs_dialog_usb_tab.h +++ b/rpcs3/rpcs3qt/vfs_dialog_usb_tab.h @@ -1,12 +1,12 @@ #pragma once -#include "gui_settings.h" - #include #include #include +class gui_settings; + namespace cfg { class device_entry; From bc01863654669067ec34da79374f5a2dd0871f37 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 16 Nov 2025 19:23:37 +0100 Subject: [PATCH 2/4] Fix some warnings --- rpcs3/Emu/CPU/CPUTranslator.h | 2 +- rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp | 2 +- rpcs3/Emu/RSX/VK/VKCompute.cpp | 6 ------ rpcs3/util/sysinfo.cpp | 8 ++++---- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/rpcs3/Emu/CPU/CPUTranslator.h b/rpcs3/Emu/CPU/CPUTranslator.h index 8d1a5d42aa..bb5b262294 100644 --- a/rpcs3/Emu/CPU/CPUTranslator.h +++ b/rpcs3/Emu/CPU/CPUTranslator.h @@ -4007,7 +4007,7 @@ llvm::CallInst* llvm_asm( const std::string& constraints, llvm::LLVMContext& context) { - llvm::ArrayRef types_ref = std::nullopt; + llvm::ArrayRef types_ref {}; std::vector types; types.reserve(args.size()); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp b/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp index ce2b685046..ba3d138f96 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp @@ -199,7 +199,7 @@ namespace rsx if (!is_compiled()) { auto renderer = get_font(); - const auto [caret_x, caret_y] = renderer->get_char_offset(text.c_str(), caret_position, clip_text ? w : -1, wrap_text); + const auto& [caret_x, caret_y] = renderer->get_char_offset(text.c_str(), caret_position, clip_text ? w : -1, wrap_text); overlay_element caret; caret.set_pos(static_cast(caret_x) + padding_left + x, static_cast(caret_y) + padding_top + y); diff --git a/rpcs3/Emu/RSX/VK/VKCompute.cpp b/rpcs3/Emu/RSX/VK/VKCompute.cpp index 9e9e2a4746..6803ce1f49 100644 --- a/rpcs3/Emu/RSX/VK/VKCompute.cpp +++ b/rpcs3/Emu/RSX/VK/VKCompute.cpp @@ -111,12 +111,6 @@ namespace vk m_shader.create(::glsl::program_domain::glsl_compute_program, m_src); auto handle = m_shader.compile(); - VkPipelineShaderStageCreateInfo shader_stage{}; - shader_stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; - shader_stage.stage = VK_SHADER_STAGE_COMPUTE_BIT; - shader_stage.module = handle; - shader_stage.pName = "main"; - VkComputePipelineCreateInfo create_info { .sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, diff --git a/rpcs3/util/sysinfo.cpp b/rpcs3/util/sysinfo.cpp index 52bb6f27b0..bf9376239c 100755 --- a/rpcs3/util/sysinfo.cpp +++ b/rpcs3/util/sysinfo.cpp @@ -71,9 +71,10 @@ namespace Darwin_ProcessInfo } #endif +#ifdef _WIN32 +#if !defined(ARCH_X64) namespace utils { -#ifdef _WIN32 // Some helpers for sanity const auto read_reg_dword = [](HKEY hKey, std::string_view value_name) -> std::pair { @@ -110,7 +111,6 @@ namespace utils return { true, sz }; }; -#if !defined(ARCH_X64) // Alternative way to read OS version using the registry. static std::string get_fallback_windows_version() { @@ -152,9 +152,9 @@ namespace utils return fmt::format("Operating system: %s, Version %s", product_name, version_id); } -#endif -#endif } +#endif +#endif bool utils::has_ssse3() { From 84fdd2e056903b9574b7dccafbefdd0d3ac16b94 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 16 Nov 2025 15:35:05 +0100 Subject: [PATCH 3/4] rsx_debugger: fix gcc index access warning --- rpcs3/rpcs3qt/rsx_debugger.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/rpcs3qt/rsx_debugger.cpp b/rpcs3/rpcs3qt/rsx_debugger.cpp index 234adbd8e2..5e7c6061dd 100644 --- a/rpcs3/rpcs3qt/rsx_debugger.cpp +++ b/rpcs3/rpcs3qt/rsx_debugger.cpp @@ -1252,8 +1252,8 @@ void rsx_debugger::GetVertexProgram() const rsx::method_registers.clip_planes_mask() }; - vp_blob.resize(vp_blob.size() + vp.data.size()); - std::copy(vp.data.begin(), vp.data.end(), vp_blob.begin() + 14); + vp_blob.reserve(vp_blob.size() + vp.data.size()); + vp_blob.insert(vp_blob.end(), vp.data.begin(), vp.data.end()); std::span vp_binary(vp_blob); CgBinaryDisasm vp_disasm(vp_binary); From 42177add17e3386c03a1e798eb6345d37acbf29b Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 16 Nov 2025 23:44:56 +0100 Subject: [PATCH 4/4] Qt: fix image flip warning on newer Qt --- rpcs3/rpcs3qt/qt_camera_video_sink.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rpcs3/rpcs3qt/qt_camera_video_sink.cpp b/rpcs3/rpcs3qt/qt_camera_video_sink.cpp index bcfd573afe..c13fcb781d 100644 --- a/rpcs3/rpcs3qt/qt_camera_video_sink.cpp +++ b/rpcs3/rpcs3qt/qt_camera_video_sink.cpp @@ -71,7 +71,14 @@ bool qt_camera_video_sink::present(const QVideoFrame& frame) // Flip image if necessary if (flip_horizontally || flip_vertically) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + Qt::Orientations orientation {}; + orientation.setFlag(Qt::Orientation::Horizontal, flip_horizontally); + orientation.setFlag(Qt::Orientation::Vertical, flip_vertically); + image.flip(orientation); +#else image.mirror(flip_horizontally, flip_vertically); +#endif } if (image.format() != QImage::Format_RGBA8888)