fix automoc in sdl-less builds

This commit is contained in:
Katharine Chui 2025-05-02 14:46:19 +02:00
parent 2ef13ce54a
commit 4d89be9ce7
2 changed files with 27 additions and 17 deletions

View file

@ -1,7 +1,7 @@
#ifdef HAVE_SDL3
#include "stdafx.h" #include "stdafx.h"
#ifdef HAVE_SDL3
#include "emulated_logitech_g27_settings_dialog.h" #include "emulated_logitech_g27_settings_dialog.h"
#include "Emu/Io/LogitechG27.cpp" #include "Emu/Io/LogitechG27.cpp"
#include "Input/sdl_instance.h" #include "Input/sdl_instance.h"
@ -21,13 +21,6 @@ LOG_CHANNEL(logitech_g27_cfg_log, "LOGIG27");
static constexpr const char* DEFAULT_STATUS = " "; static constexpr const char* DEFAULT_STATUS = " ";
struct joystick_state
{
std::vector<int16_t> axes;
std::vector<bool> buttons;
std::vector<hat_component> hats;
};
enum mapping_device_choice enum mapping_device_choice
{ {
CHOICE_NONE = -1, CHOICE_NONE = -1,
@ -787,7 +780,7 @@ emulated_logitech_g27_settings_dialog::~emulated_logitech_g27_settings_dialog()
for (auto joystick_handle : m_joystick_handles) for (auto joystick_handle : m_joystick_handles)
{ {
if (joystick_handle) if (joystick_handle)
SDL_CloseJoystick(joystick_handle); SDL_CloseJoystick(reinterpret_cast<SDL_Joystick*>(joystick_handle));
} }
} }
@ -839,7 +832,7 @@ const std::map<uint32_t, joystick_state>& emulated_logitech_g27_settings_dialog:
int joystick_count; int joystick_count;
SDL_JoystickID* joystick_ids = SDL_GetJoysticks(&joystick_count); SDL_JoystickID* joystick_ids = SDL_GetJoysticks(&joystick_count);
std::vector<SDL_Joystick*> new_joystick_handles; std::vector<void*> new_joystick_handles;
if (joystick_ids != nullptr) if (joystick_ids != nullptr)
{ {
@ -900,7 +893,7 @@ const std::map<uint32_t, joystick_state>& emulated_logitech_g27_settings_dialog:
for (auto joystick_handle : m_joystick_handles) for (auto joystick_handle : m_joystick_handles)
{ {
if (joystick_handle) if (joystick_handle)
SDL_CloseJoystick(joystick_handle); SDL_CloseJoystick(reinterpret_cast<SDL_Joystick*>(joystick_handle));
} }
m_joystick_handles = new_joystick_handles; m_joystick_handles = new_joystick_handles;
@ -967,4 +960,13 @@ void emulated_logitech_g27_settings_dialog::set_enable(bool enable)
m_mapping_scroll_area->verticalScrollBar()->setSliderPosition(slider_position); m_mapping_scroll_area->verticalScrollBar()->setSliderPosition(slider_position);
} }
#else
// minimal symbols for sdl-less builds automoc
#include "emulated_logitech_g27_settings_dialog.h"
emulated_logitech_g27_settings_dialog::emulated_logitech_g27_settings_dialog(QWidget* parent)
: QDialog(parent) {}
emulated_logitech_g27_settings_dialog::~emulated_logitech_g27_settings_dialog() {};
#endif #endif

View file

@ -5,6 +5,7 @@
#include <QCheckBox> #include <QCheckBox>
#include <QScrollArea> #include <QScrollArea>
#ifdef HAVE_SDL3
#ifndef _MSC_VER #ifndef _MSC_VER
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wold-style-cast" #pragma GCC diagnostic ignored "-Wold-style-cast"
@ -13,12 +14,18 @@
#ifndef _MSC_VER #ifndef _MSC_VER
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif #endif
#endif
#include <map> #include <map>
#include <vector> #include <vector>
#include <Emu/Io/LogitechG27Config.h> #include <Emu/Io/LogitechG27Config.h>
struct joystick_state; struct joystick_state
{
std::vector<int16_t> axes;
std::vector<bool> buttons;
std::vector<hat_component> hats;
};
class Mapping; class Mapping;
class DeviceChoice; class DeviceChoice;
@ -35,11 +42,9 @@ public:
void set_enable(bool enable); void set_enable(bool enable);
private: private:
void load_ui_state_from_config();
void save_ui_state_to_config();
std::map<uint32_t, joystick_state> m_last_joystick_states; std::map<uint32_t, joystick_state> m_last_joystick_states;
std::vector<SDL_Joystick*> m_joystick_handles; // hack: need a completed dummy class when linking automoc generated with sdl-less build
std::vector<void*> m_joystick_handles;
uint64_t m_last_joystick_states_update = 0; uint64_t m_last_joystick_states_update = 0;
bool m_sdl_initialized = false; bool m_sdl_initialized = false;
@ -92,4 +97,7 @@ private:
DeviceChoice* m_led_device = nullptr; DeviceChoice* m_led_device = nullptr;
QScrollArea* m_mapping_scroll_area = nullptr; QScrollArea* m_mapping_scroll_area = nullptr;
void load_ui_state_from_config();
void save_ui_state_to_config();
}; };