rpcs3/rpcs3/pad_thread.h

44 lines
892 B
C++

#pragma once
#include <map>
#include <thread>
#include "Emu/System.h"
#include "../Utilities/types.h"
#include "Emu/Io/PadHandler.h"
struct PadInfo
{
u32 max_connect;
u32 now_connect;
u32 system_info;
};
class pad_thread
{
public:
pad_thread(void *_curthread, void *_curwindow); //void * instead of QThread * and QWindow * because of include in emucore
~pad_thread();
void Init(const u32 max_connect);
PadInfo& GetInfo() { return m_info; }
std::vector<std::shared_ptr<Pad>>& GetPads() { return m_pads; }
void SetRumble(const u32 pad, u8 largeMotor, bool smallMotor);
protected:
void ThreadFunc();
//List of all handlers
std::map<pad_handler, std::shared_ptr<PadHandlerBase>> handlers;
//Used for pad_handler::keyboard
void *curthread;
void *curwindow;
PadInfo m_info;
std::vector<std::shared_ptr<Pad>> m_pads;
bool active;
std::shared_ptr<std::thread> thread;
};