input
This commit is contained in:
56
external/parallel-rdp/ParallelRDPWrapper.cpp
vendored
56
external/parallel-rdp/ParallelRDPWrapper.cpp
vendored
@@ -66,62 +66,6 @@ void SetFramerateUnlocked(bool unlocked) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SDLWSIPlatform final : public Vulkan::WSIPlatform {
|
|
||||||
public:
|
|
||||||
SDLWSIPlatform(SDL_Window* window) : window(window) {}
|
|
||||||
|
|
||||||
std::vector<const char *> get_instance_extensions() override {
|
|
||||||
const char* extensions[64];
|
|
||||||
unsigned int num_extensions = 64;
|
|
||||||
|
|
||||||
if (!SDL_Vulkan_GetInstanceExtensions(window, &num_extensions, extensions)) {
|
|
||||||
Util::panic("SDL_Vulkan_GetInstanceExtensions failed: {}", SDL_GetError());
|
|
||||||
}
|
|
||||||
auto vec = std::vector<const char*>();
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < num_extensions; i++) {
|
|
||||||
vec.push_back(extensions[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return vec;
|
|
||||||
}
|
|
||||||
|
|
||||||
VkSurfaceKHR create_surface(VkInstance instance, VkPhysicalDevice gpu) override {
|
|
||||||
VkSurfaceKHR vk_surface;
|
|
||||||
if (!SDL_Vulkan_CreateSurface(window, instance, &vk_surface)) {
|
|
||||||
Util::panic("Failed to create Vulkan window surface: {}", SDL_GetError());
|
|
||||||
}
|
|
||||||
return vk_surface;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t get_surface_width() override {
|
|
||||||
return 640;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t get_surface_height() override {
|
|
||||||
return 480;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool alive(Vulkan::WSI &wsi_) override {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void poll_input() override { }
|
|
||||||
|
|
||||||
void event_frame_tick(double frame, double elapsed) override { }
|
|
||||||
|
|
||||||
const VkApplicationInfo *get_application_info() override {
|
|
||||||
return &appInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
VkApplicationInfo appInfo {
|
|
||||||
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
|
|
||||||
.apiVersion = VK_API_VERSION_1_1
|
|
||||||
};
|
|
||||||
private:
|
|
||||||
SDL_Window* window;
|
|
||||||
};
|
|
||||||
|
|
||||||
Program* fullscreen_quad_program;
|
Program* fullscreen_quad_program;
|
||||||
|
|
||||||
WSI* LoadWSIPlatform(Vulkan::InstanceFactory* instanceFactory, std::unique_ptr<Vulkan::WSIPlatform>&& wsi_platform, std::unique_ptr<ParallelRdpWindowInfo>&& newWindowInfo) {
|
WSI* LoadWSIPlatform(Vulkan::InstanceFactory* instanceFactory, std::unique_ptr<Vulkan::WSIPlatform>&& wsi_platform, std::unique_ptr<ParallelRdpWindowInfo>&& newWindowInfo) {
|
||||||
|
|||||||
11
external/parallel-rdp/ParallelRDPWrapper.hpp
vendored
11
external/parallel-rdp/ParallelRDPWrapper.hpp
vendored
@@ -12,17 +12,6 @@ public:
|
|||||||
virtual ~ParallelRdpWindowInfo() = default;
|
virtual ~ParallelRdpWindowInfo() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SDLParallelRdpWindowInfo : public ParallelRdpWindowInfo {
|
|
||||||
SDL_Window* window;
|
|
||||||
public:
|
|
||||||
SDLParallelRdpWindowInfo(SDL_Window* window) : window(window) {}
|
|
||||||
CoordinatePair get_window_size() {
|
|
||||||
int width, height;
|
|
||||||
SDL_GetWindowSize(window, &width, &height);
|
|
||||||
return CoordinatePair{ static_cast<float>(width), static_cast<float>(height) };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static Vulkan::WSI* wsi;
|
static Vulkan::WSI* wsi;
|
||||||
|
|
||||||
VkRenderPass GetVkRenderPass();
|
VkRenderPass GetVkRenderPass();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ u32 PopStalledCycles() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Core::Core() {
|
Core::Core() {
|
||||||
SDL_Init(SDL_INIT_EVERYTHING);
|
|
||||||
if(SDL_GameControllerAddMappingsFromFile("resources/gamecontrollerdb.txt") < 0) {
|
if(SDL_GameControllerAddMappingsFromFile("resources/gamecontrollerdb.txt") < 0) {
|
||||||
Util::warn("Failed to load game controller DB");
|
Util::warn("Failed to load game controller DB");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,7 +186,6 @@ void PIF::ProcessCommands(Mem &mem) {
|
|||||||
channel++;
|
channel++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
UpdateController();
|
|
||||||
if(!ReadButtons(res)) {
|
if(!ReadButtons(res)) {
|
||||||
cmd[1] |= 0x80;
|
cmd[1] |= 0x80;
|
||||||
}
|
}
|
||||||
@@ -334,12 +333,47 @@ void PIF::EepromWrite(const u8* cmd, u8* res, const Mem& mem) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PIF::UpdateController() {
|
void PIF::UpdateController(u32 value) {
|
||||||
//if(Netplay::connected) {
|
bool A = (value >> 31) & 1;
|
||||||
// Util::panic("Netplay!!!");
|
bool B = (value >> 30) & 1;
|
||||||
//} else {
|
bool Z = (value >> 29) & 1;
|
||||||
PollController();
|
bool START = (value >> 28) & 1;
|
||||||
//}
|
bool DUP = (value >> 27) & 1;
|
||||||
|
bool DDOWN = (value >> 26) & 1;
|
||||||
|
bool DLEFT = (value >> 25) & 1;
|
||||||
|
bool DRIGHT = (value >> 24) & 1;
|
||||||
|
bool L = (value >> 21) & 1;
|
||||||
|
bool R = (value >> 20) & 1;
|
||||||
|
bool CUP = (value >> 19) & 1;
|
||||||
|
bool CDOWN = (value >> 18) & 1;
|
||||||
|
bool CLEFT = (value >> 17) & 1;
|
||||||
|
bool CRIGHT = (value >> 16) & 1;
|
||||||
|
s8 x = (s8(value >> 8)) & 0xFF;
|
||||||
|
s8 y = (s8(value)) & 0xFF;
|
||||||
|
|
||||||
|
joybusDevices[channel].controller.a = A;
|
||||||
|
joybusDevices[channel].controller.b = B;
|
||||||
|
joybusDevices[channel].controller.z = Z;
|
||||||
|
joybusDevices[channel].controller.start = START;
|
||||||
|
joybusDevices[channel].controller.dp_up = DUP;
|
||||||
|
joybusDevices[channel].controller.dp_down = DDOWN;
|
||||||
|
joybusDevices[channel].controller.dp_left = DLEFT;
|
||||||
|
joybusDevices[channel].controller.dp_right = DRIGHT;
|
||||||
|
joybusDevices[channel].controller.joy_reset = L && R && START;
|
||||||
|
joybusDevices[channel].controller.l = L;
|
||||||
|
joybusDevices[channel].controller.r = R;
|
||||||
|
joybusDevices[channel].controller.c_up = CUP;
|
||||||
|
joybusDevices[channel].controller.c_down = CDOWN;
|
||||||
|
joybusDevices[channel].controller.c_left = CLEFT;
|
||||||
|
joybusDevices[channel].controller.c_right = CRIGHT;
|
||||||
|
joybusDevices[channel].controller.joy_x = x;
|
||||||
|
joybusDevices[channel].controller.joy_y = -y;
|
||||||
|
|
||||||
|
if (joybusDevices[channel].controller.joy_reset) {
|
||||||
|
joybusDevices[channel].controller.start = false;
|
||||||
|
joybusDevices[channel].controller.joy_x = 0;
|
||||||
|
joybusDevices[channel].controller.joy_y = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PIF::DoPIFHLE(Mem& mem, Registers& regs, bool pal, CICType cicType) {
|
void PIF::DoPIFHLE(Mem& mem, Registers& regs, bool pal, CICType cicType) {
|
||||||
|
|||||||
@@ -115,8 +115,7 @@ struct PIF {
|
|||||||
void CICChallenge();
|
void CICChallenge();
|
||||||
static void ExecutePIF(Mem& mem, Registers& regs);
|
static void ExecutePIF(Mem& mem, Registers& regs);
|
||||||
static void DoPIFHLE(Mem& mem, Registers& regs, bool pal, CICType cicType);
|
static void DoPIFHLE(Mem& mem, Registers& regs, bool pal, CICType cicType);
|
||||||
void PollController();
|
void UpdateController(u32);
|
||||||
void UpdateController();
|
|
||||||
bool ReadButtons(u8*) const;
|
bool ReadButtons(u8*) const;
|
||||||
void ControllerID(u8*) const;
|
void ControllerID(u8*) const;
|
||||||
void MempakRead(const u8*, u8*);
|
void MempakRead(const u8*, u8*);
|
||||||
|
|||||||
@@ -23,110 +23,6 @@ void PIF::InitDevices(SaveType saveType) {
|
|||||||
joybusDevices[5].type = JOYBUS_NONE;
|
joybusDevices[5].type = JOYBUS_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GET_BUTTON(gamecontroller, i) SDL_GameControllerGetButton(gamecontroller, i)
|
|
||||||
#define GET_AXIS(gamecontroller, axis) SDL_GameControllerGetAxis(gamecontroller, axis)
|
|
||||||
|
|
||||||
void PIF::PollController() {
|
|
||||||
if(gamepadConnected) {
|
|
||||||
bool A = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_A);
|
|
||||||
bool B = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_X);
|
|
||||||
bool Z = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_TRIGGERLEFT) == SDL_JOYSTICK_AXIS_MAX;
|
|
||||||
bool START = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_START);
|
|
||||||
bool DUP = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_DPAD_UP);
|
|
||||||
bool DDOWN = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_DPAD_DOWN);
|
|
||||||
bool DLEFT = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_DPAD_LEFT);
|
|
||||||
bool DRIGHT = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_DPAD_RIGHT);
|
|
||||||
bool L = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_LEFTSHOULDER);
|
|
||||||
bool R = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER);
|
|
||||||
bool CUP = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) <= -127;
|
|
||||||
bool CDOWN = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) >= 127;
|
|
||||||
bool CLEFT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) <= -127;
|
|
||||||
bool CRIGHT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) >= 127;
|
|
||||||
|
|
||||||
joybusDevices[channel].controller.a = A;
|
|
||||||
joybusDevices[channel].controller.b = B;
|
|
||||||
joybusDevices[channel].controller.z = Z;
|
|
||||||
joybusDevices[channel].controller.start = START;
|
|
||||||
joybusDevices[channel].controller.dp_up = DUP;
|
|
||||||
joybusDevices[channel].controller.dp_down = DDOWN;
|
|
||||||
joybusDevices[channel].controller.dp_left = DLEFT;
|
|
||||||
joybusDevices[channel].controller.dp_right = DRIGHT;
|
|
||||||
joybusDevices[channel].controller.joy_reset = L && R && START;
|
|
||||||
joybusDevices[channel].controller.l = L;
|
|
||||||
joybusDevices[channel].controller.r = R;
|
|
||||||
joybusDevices[channel].controller.c_up = CUP;
|
|
||||||
joybusDevices[channel].controller.c_down = CDOWN;
|
|
||||||
joybusDevices[channel].controller.c_left = CLEFT;
|
|
||||||
joybusDevices[channel].controller.c_right = CRIGHT;
|
|
||||||
|
|
||||||
float xclamped = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTX);
|
|
||||||
if(xclamped < 0) {
|
|
||||||
xclamped /= float(std::abs(SDL_JOYSTICK_AXIS_MIN));
|
|
||||||
} else {
|
|
||||||
xclamped /= SDL_JOYSTICK_AXIS_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
xclamped *= 86;
|
|
||||||
|
|
||||||
float yclamped = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTY);
|
|
||||||
if(yclamped < 0) {
|
|
||||||
yclamped /= float(std::abs(SDL_JOYSTICK_AXIS_MIN));
|
|
||||||
} else {
|
|
||||||
yclamped /= SDL_JOYSTICK_AXIS_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
yclamped *= 86;
|
|
||||||
|
|
||||||
joybusDevices[channel].controller.joy_x = xclamped;
|
|
||||||
joybusDevices[channel].controller.joy_y = -yclamped;
|
|
||||||
|
|
||||||
if (joybusDevices[channel].controller.joy_reset) {
|
|
||||||
joybusDevices[channel].controller.start = false;
|
|
||||||
joybusDevices[channel].controller.joy_x = 0;
|
|
||||||
joybusDevices[channel].controller.joy_y = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const uint8_t* state = SDL_GetKeyboardState(nullptr);
|
|
||||||
joybusDevices[channel].controller.a = state[SDL_SCANCODE_X];
|
|
||||||
joybusDevices[channel].controller.b = state[SDL_SCANCODE_C];
|
|
||||||
joybusDevices[channel].controller.z = state[SDL_SCANCODE_Z];
|
|
||||||
joybusDevices[channel].controller.start = state[SDL_SCANCODE_RETURN];
|
|
||||||
joybusDevices[channel].controller.dp_up = state[SDL_SCANCODE_PAGEUP];
|
|
||||||
joybusDevices[channel].controller.dp_down = state[SDL_SCANCODE_PAGEDOWN];
|
|
||||||
joybusDevices[channel].controller.dp_left = state[SDL_SCANCODE_HOME];
|
|
||||||
joybusDevices[channel].controller.dp_right = state[SDL_SCANCODE_END];
|
|
||||||
joybusDevices[channel].controller.joy_reset = state[SDL_SCANCODE_RETURN] && state[SDL_SCANCODE_A] && state[SDL_SCANCODE_S];
|
|
||||||
joybusDevices[channel].controller.l = state[SDL_SCANCODE_A];
|
|
||||||
joybusDevices[channel].controller.r = state[SDL_SCANCODE_S];
|
|
||||||
joybusDevices[channel].controller.c_up = state[SDL_SCANCODE_I];
|
|
||||||
joybusDevices[channel].controller.c_down = state[SDL_SCANCODE_K];
|
|
||||||
joybusDevices[channel].controller.c_left = state[SDL_SCANCODE_J];
|
|
||||||
joybusDevices[channel].controller.c_right = state[SDL_SCANCODE_L];
|
|
||||||
|
|
||||||
s8 xaxis = 0, yaxis = 0;
|
|
||||||
if (state[SDL_SCANCODE_LEFT]) {
|
|
||||||
xaxis = -86;
|
|
||||||
} else if (state[SDL_SCANCODE_RIGHT]) {
|
|
||||||
xaxis = 86;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state[SDL_SCANCODE_DOWN]) {
|
|
||||||
yaxis = -86;
|
|
||||||
} else if (state[SDL_SCANCODE_UP]) {
|
|
||||||
yaxis = 86;
|
|
||||||
}
|
|
||||||
|
|
||||||
joybusDevices[channel].controller.joy_x = xaxis;
|
|
||||||
joybusDevices[channel].controller.joy_y = yaxis;
|
|
||||||
|
|
||||||
if (joybusDevices[channel].controller.joy_reset) {
|
|
||||||
joybusDevices[channel].controller.start = false;
|
|
||||||
joybusDevices[channel].controller.joy_x = 0;
|
|
||||||
joybusDevices[channel].controller.joy_y = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PIF::ControllerID(u8 *res) const {
|
void PIF::ControllerID(u8 *res) const {
|
||||||
if (channel < 6) {
|
if (channel < 6) {
|
||||||
switch (joybusDevices[channel].type) {
|
switch (joybusDevices[channel].type) {
|
||||||
@@ -197,6 +93,8 @@ bool PIF::ReadButtons(u8* res) const {
|
|||||||
res[2] = 0x00;
|
res[2] = 0x00;
|
||||||
res[3] = 0x00;
|
res[3] = 0x00;
|
||||||
return false; // Device not present
|
return false; // Device not present
|
||||||
|
case JOYBUS_4KB_EEPROM:
|
||||||
|
case JOYBUS_16KB_EEPROM:
|
||||||
case JOYBUS_CONTROLLER:
|
case JOYBUS_CONTROLLER:
|
||||||
if (TasMovieLoaded()) {
|
if (TasMovieLoaded()) {
|
||||||
Controller controller = TasNextInputs();
|
Controller controller = TasNextInputs();
|
||||||
@@ -216,8 +114,6 @@ bool PIF::ReadButtons(u8* res) const {
|
|||||||
case JOYBUS_MOUSE:
|
case JOYBUS_MOUSE:
|
||||||
case JOYBUS_RANDNET_KEYBOARD:
|
case JOYBUS_RANDNET_KEYBOARD:
|
||||||
case JOYBUS_DENSHA_DE_GO:
|
case JOYBUS_DENSHA_DE_GO:
|
||||||
case JOYBUS_4KB_EEPROM:
|
|
||||||
case JOYBUS_16KB_EEPROM:
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include <KaizenQt.hpp>
|
#include <KaizenQt.hpp>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QDropEvent>
|
||||||
|
#include <QMimeData>
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
|
|
||||||
KaizenQt::KaizenQt() noexcept {
|
KaizenQt::KaizenQt() noexcept : QWidget(nullptr) {
|
||||||
mainWindow = new MainWindowController();
|
mainWindow = new MainWindowController();
|
||||||
emuThread = new EmuThread(
|
emuThread = new EmuThread(
|
||||||
std::move(mainWindow->view.vulkanWidget->instance),
|
std::move(mainWindow->view.vulkanWidget->instance),
|
||||||
@@ -13,6 +15,11 @@ KaizenQt::KaizenQt() noexcept {
|
|||||||
|
|
||||||
ConnectMainWindowSignalsToSlots();
|
ConnectMainWindowSignalsToSlots();
|
||||||
|
|
||||||
|
grabKeyboard();
|
||||||
|
setAcceptDrops(true);
|
||||||
|
setFocusPolicy(Qt::FocusPolicy::StrongFocus);
|
||||||
|
setFocus();
|
||||||
|
|
||||||
mainWindow->show();
|
mainWindow->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +33,43 @@ void KaizenQt::ConnectMainWindowSignalsToSlots() noexcept {
|
|||||||
connect(mainWindow, &MainWindowController::Pause, emuThread, &EmuThread::TogglePause);
|
connect(mainWindow, &MainWindowController::Pause, emuThread, &EmuThread::TogglePause);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KaizenQt::dragEnterEvent(QDragEnterEvent* event) {
|
||||||
|
if (event->mimeData()->hasUrls()) {
|
||||||
|
event->acceptProposedAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KaizenQt::dropEvent(QDropEvent* event) {
|
||||||
|
auto path = event->mimeData()->urls()[0].toLocalFile();
|
||||||
|
LoadROM(path);
|
||||||
|
}
|
||||||
|
|
||||||
void KaizenQt::LoadROM(const QString& file_name) noexcept {
|
void KaizenQt::LoadROM(const QString& file_name) noexcept {
|
||||||
emuThread->start();
|
emuThread->start();
|
||||||
emuThread->core.LoadROM(file_name.toStdString());
|
emuThread->core.LoadROM(file_name.toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
|
void KaizenQt::keyPressEvent(QKeyEvent* e) {
|
||||||
|
u32 data = 0;
|
||||||
|
emuThread->core.cpu->mem.mmio.si.pif.UpdateController(data);
|
||||||
|
if (e->key() == Qt::Key::Key_X) data |= (1 << 31);
|
||||||
|
if (e->key() == Qt::Key::Key_C) data |= (1 << 30);
|
||||||
|
if (e->key() == Qt::Key::Key_Z) data |= (1 << 29);
|
||||||
|
if (e->key() == Qt::Key::Key_Enter
|
||||||
|
|| e->key() == Qt::Key::Key_Return) data |= (1 << 28);
|
||||||
|
if (e->key() == Qt::Key::Key_I) data |= (1 << 27);
|
||||||
|
if (e->key() == Qt::Key::Key_K) data |= (1 << 26);
|
||||||
|
if (e->key() == Qt::Key::Key_J) data |= (1 << 25);
|
||||||
|
if (e->key() == Qt::Key::Key_L) data |= (1 << 24);
|
||||||
|
if (e->key() == Qt::Key::Key_A) data |= (1 << 21);
|
||||||
|
if (e->key() == Qt::Key::Key_S) data |= (1 << 20);
|
||||||
|
if (e->key() == Qt::Key::Key_8) data |= (1 << 19);
|
||||||
|
if (e->key() == Qt::Key::Key_2) data |= (1 << 18);
|
||||||
|
if (e->key() == Qt::Key::Key_4) data |= (1 << 17);
|
||||||
|
if (e->key() == Qt::Key::Key_6) data |= (1 << 16);
|
||||||
|
if (e->key() == Qt::Key::Key_Up) data |= 127;
|
||||||
|
if (e->key() == Qt::Key::Key_Down) data |= -127;
|
||||||
|
if (e->key() == Qt::Key::Key_Left) data |= u32(-127) << 8;
|
||||||
|
if (e->key() == Qt::Key::Key_Right) data |= u32(127) << 8;
|
||||||
|
emuThread->core.cpu->mem.mmio.si.pif.UpdateController(data);
|
||||||
}
|
}
|
||||||
@@ -22,11 +22,15 @@ static inline CompositorCategory GetOSCompositorCategory() {
|
|||||||
return CompositorCategory::Windows;
|
return CompositorCategory::Windows;
|
||||||
}
|
}
|
||||||
|
|
||||||
class KaizenQt : public QObject {
|
class KaizenQt : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
KaizenQt() noexcept;
|
KaizenQt() noexcept;
|
||||||
void LoadROM(const QString& path) noexcept;
|
void LoadROM(const QString& path) noexcept;
|
||||||
|
void dropEvent(QDropEvent*) override;
|
||||||
|
void dragEnterEvent(QDragEnterEvent*) override;
|
||||||
|
protected:
|
||||||
|
void keyPressEvent(QKeyEvent* event) override;
|
||||||
private:
|
private:
|
||||||
void ConnectMainWindowSignalsToSlots() noexcept;
|
void ConnectMainWindowSignalsToSlots() noexcept;
|
||||||
MainWindowController* mainWindow;
|
MainWindowController* mainWindow;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
#include <QVulkanInstance>
|
#include <QVulkanInstance>
|
||||||
#include <QVulkanWindow>
|
#include <QVulkanWindow>
|
||||||
|
#include <EmuThread.hpp>
|
||||||
|
|
||||||
struct QtInstanceFactory : Vulkan::InstanceFactory {
|
struct QtInstanceFactory : Vulkan::InstanceFactory {
|
||||||
VkInstance create_instance(const VkInstanceCreateInfo *info) override {
|
VkInstance create_instance(const VkInstanceCreateInfo *info) override {
|
||||||
@@ -71,9 +72,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void poll_input() override {
|
void poll_input() override {}
|
||||||
SDL_PumpEvents();
|
|
||||||
}
|
|
||||||
|
|
||||||
void event_frame_tick(double frame, double elapsed) override { }
|
void event_frame_tick(double frame, double elapsed) override { }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user