mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-09 13:37:48 +00:00
eliminated some hid-thread race conditions
This commit is contained in:
@@ -11,8 +11,8 @@ class CDeviceBase
|
||||
friend CDeviceToken;
|
||||
void _deviceDisconnected();
|
||||
public:
|
||||
inline CDeviceBase(CDeviceToken* token, IHIDDevice* hidDev)
|
||||
: m_token(token), m_hidDev(hidDev) {}
|
||||
CDeviceBase(CDeviceToken* token, IHIDDevice* hidDev);
|
||||
virtual ~CDeviceBase();
|
||||
void closeDevice();
|
||||
virtual void deviceDisconnected()=0;
|
||||
};
|
||||
|
||||
@@ -55,8 +55,9 @@ private:
|
||||
if (preCheck != m_tokens.end())
|
||||
{
|
||||
CDeviceToken& tok = preCheck->second;
|
||||
CDeviceBase* dev = tok.m_connectedDev;
|
||||
tok._deviceClose();
|
||||
deviceDisconnected(tok);
|
||||
deviceDisconnected(tok, dev);
|
||||
m_tokensLock.lock();
|
||||
m_tokens.erase(preCheck);
|
||||
m_tokensLock.unlock();
|
||||
@@ -127,7 +128,7 @@ public:
|
||||
}
|
||||
|
||||
virtual void deviceConnected(CDeviceToken&) {}
|
||||
virtual void deviceDisconnected(CDeviceToken&) {}
|
||||
virtual void deviceDisconnected(CDeviceToken&, CDeviceBase*) {}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ class CDeviceToken
|
||||
friend class CDeviceFinder;
|
||||
inline void _deviceClose()
|
||||
{
|
||||
printf("CLOSE %p\n", this);
|
||||
if (m_connectedDev)
|
||||
m_connectedDev->_deviceDisconnected();
|
||||
m_connectedDev = NULL;
|
||||
@@ -52,7 +51,6 @@ public:
|
||||
inline bool isDeviceOpen() const {return m_connectedDev;}
|
||||
inline CDeviceBase* openAndGetDevice()
|
||||
{
|
||||
printf("OPEN %p\n", this);
|
||||
if (!m_connectedDev)
|
||||
m_connectedDev = BooDeviceNew(this);
|
||||
return m_connectedDev;
|
||||
|
||||
@@ -8,6 +8,7 @@ class CDolphinSmashAdapter final : public CDeviceBase
|
||||
void deviceDisconnected();
|
||||
public:
|
||||
CDolphinSmashAdapter(CDeviceToken* token, IHIDDevice* hidDev);
|
||||
~CDolphinSmashAdapter();
|
||||
};
|
||||
|
||||
#endif // CDOLPHINSMASHADAPTER_HPP
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "CDualshockPad.hpp"
|
||||
#include "CGenericPad.hpp"
|
||||
|
||||
#define VID_NINTENDO 0x57e
|
||||
#define PID_SMASH_ADAPTER 0x337
|
||||
|
||||
enum EDeviceMask
|
||||
{
|
||||
DEV_NONE = 0,
|
||||
|
||||
Reference in New Issue
Block a user