Fix noWX compiling, Fix OSX crashing when opening options because of dumb code. Fix OSX Wiimote, will fix multi-wiimote in OSX later.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5154 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e2316087f7
commit
e79dc93a5c
|
@ -53,6 +53,7 @@ IOBluetoothL2CAPChannel * _cchan;
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
|
||||||
byte DataFromWiimote[MAX_PAYLOAD];
|
byte DataFromWiimote[MAX_PAYLOAD];
|
||||||
|
NSUInteger g_length;
|
||||||
|
|
||||||
static int wiiuse_connect_single(struct wiimote_t* wm, char* address);
|
static int wiiuse_connect_single(struct wiimote_t* wm, char* address);
|
||||||
|
|
||||||
|
@ -99,6 +100,7 @@ static int wiiuse_connect_single(struct wiimote_t* wm, char* address);
|
||||||
|
|
||||||
//here we got data from wiimote
|
//here we got data from wiimote
|
||||||
memcpy(DataFromWiimote, BtData, MAX_PAYLOAD);
|
memcpy(DataFromWiimote, BtData, MAX_PAYLOAD);
|
||||||
|
g_length = length;
|
||||||
|
|
||||||
//stop the main loop after reading
|
//stop the main loop after reading
|
||||||
CFRunLoopStop( CFRunLoopGetCurrent() );
|
CFRunLoopStop( CFRunLoopGetCurrent() );
|
||||||
|
@ -319,6 +321,7 @@ static int wiiuse_connect_single(struct wiimote_t* wm, char* address) {
|
||||||
//start to connect to the wiimotes
|
//start to connect to the wiimotes
|
||||||
[cbt connectToWiimotes];
|
[cbt connectToWiimotes];
|
||||||
|
|
||||||
|
usleep (200000); // Little delay, or else the device isn't ready!
|
||||||
WIIUSE_INFO("Connected to wiimote [id %i].", wm->unid);
|
WIIUSE_INFO("Connected to wiimote [id %i].", wm->unid);
|
||||||
|
|
||||||
/* do the handshake */
|
/* do the handshake */
|
||||||
|
@ -367,8 +370,11 @@ int wiiuse_io_read(struct wiimote_t* wm) {
|
||||||
//run the main loop to get bt data
|
//run the main loop to get bt data
|
||||||
CFRunLoopRun();
|
CFRunLoopRun();
|
||||||
|
|
||||||
memcpy(wm->event_buf,DataFromWiimote,sizeof(wm->event_buf));
|
memcpy(wm->event_buf,DataFromWiimote, g_length);
|
||||||
|
if(!g_length || !wm->event_buf[0]) // no packet
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
wm->event_buf[0] = 0xa2; // Make sure it's 0xa2, just in case
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,7 +132,10 @@ bool CSIDevice_GCController::GetData(u32& _Hi, u32& _Low)
|
||||||
pad->PAD_GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus);
|
pad->PAD_GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus);
|
||||||
|
|
||||||
u32 netValues[2] = {0};
|
u32 netValues[2] = {0};
|
||||||
int NetPlay = GetNetInput(ISIDevice::m_iDeviceNumber, PadStatus, netValues);
|
int NetPlay = 2;
|
||||||
|
#if defined(HAVE_WX) && HAVE_WX
|
||||||
|
NetPlay = GetNetInput(ISIDevice::m_iDeviceNumber, PadStatus, netValues);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (NetPlay != 2)
|
if (NetPlay != 2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -165,9 +165,13 @@ void DllConfig(HWND _hParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only allow one open at a time
|
// Only allow one open at a time
|
||||||
|
#ifdef _WIN32
|
||||||
frame->Disable();
|
frame->Disable();
|
||||||
m_ConfigFrame->ShowModal();
|
m_ConfigFrame->ShowModal();
|
||||||
frame->Enable();
|
frame->Enable();
|
||||||
|
#else
|
||||||
|
m_ConfigFrame->ShowModal();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
frame->SetFocus();
|
frame->SetFocus();
|
||||||
|
|
|
@ -147,9 +147,13 @@ void DllConfig(HWND _hParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only allow one open at a time
|
// Only allow one open at a time
|
||||||
|
#ifdef _WIN32
|
||||||
frame->Disable();
|
frame->Disable();
|
||||||
m_ConfigFrame->ShowModal();
|
m_ConfigFrame->ShowModal();
|
||||||
frame->Enable();
|
frame->Enable();
|
||||||
|
#else
|
||||||
|
m_ConfigFrame->ShowModal();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
frame->SetFocus();
|
frame->SetFocus();
|
||||||
|
|
|
@ -164,9 +164,13 @@ void DllConfig(HWND _hParent)
|
||||||
wxWindow *frame = GetParentedWxWindow(_hParent);
|
wxWindow *frame = GetParentedWxWindow(_hParent);
|
||||||
m_ConfigFrame = new GCPadConfigDialog(frame);
|
m_ConfigFrame = new GCPadConfigDialog(frame);
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
frame->Disable();
|
frame->Disable();
|
||||||
m_ConfigFrame->ShowModal();
|
m_ConfigFrame->ShowModal();
|
||||||
frame->Enable();
|
frame->Enable();
|
||||||
|
#else
|
||||||
|
m_ConfigFrame->ShowModal();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
frame->SetFocus();
|
frame->SetFocus();
|
||||||
|
|
|
@ -291,10 +291,15 @@ void DllConfig(HWND _hParent)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Prevent user to show more than 1 config window at same time
|
// Prevent user to show more than 1 config window at same time
|
||||||
|
#ifdef _WIN32
|
||||||
frame->Disable();
|
frame->Disable();
|
||||||
m_ConfigFrame->CreateGUIControls();
|
m_ConfigFrame->CreateGUIControls();
|
||||||
m_ConfigFrame->ShowModal();
|
m_ConfigFrame->ShowModal();
|
||||||
frame->Enable();
|
frame->Enable();
|
||||||
|
#else
|
||||||
|
m_ConfigFrame->CreateGUIControls();
|
||||||
|
m_ConfigFrame->ShowModal();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
frame->SetFocus();
|
frame->SetFocus();
|
||||||
|
|
|
@ -168,10 +168,13 @@ void DllConfig(HWND _hParent)
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
#if defined(HAVE_WX) && HAVE_WX
|
||||||
wxWindow *frame = GetParentedWxWindow(_hParent);
|
wxWindow *frame = GetParentedWxWindow(_hParent);
|
||||||
m_BasicConfigFrame = new WiimoteBasicConfigDialog(frame);
|
m_BasicConfigFrame = new WiimoteBasicConfigDialog(frame);
|
||||||
|
#ifdef _WIN32
|
||||||
frame->Disable();
|
frame->Disable();
|
||||||
m_BasicConfigFrame->ShowModal();
|
m_BasicConfigFrame->ShowModal();
|
||||||
frame->Enable();
|
frame->Enable();
|
||||||
|
#else
|
||||||
|
m_BasicConfigFrame->ShowModal();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
frame->SetFocus();
|
frame->SetFocus();
|
||||||
|
|
|
@ -77,6 +77,8 @@ bool g_RunTemporary = false;
|
||||||
int g_RunTemporaryCountdown = 0;
|
int g_RunTemporaryCountdown = 0;
|
||||||
u8 g_EventBuffer[32];
|
u8 g_EventBuffer[32];
|
||||||
bool g_WiimoteInUse[MAX_WIIMOTES];
|
bool g_WiimoteInUse[MAX_WIIMOTES];
|
||||||
|
Common::Event NeedsConnect;
|
||||||
|
Common::Event Connected;
|
||||||
|
|
||||||
// Probably this class should be in its own file
|
// Probably this class should be in its own file
|
||||||
|
|
||||||
|
@ -315,6 +317,8 @@ int Initialize()
|
||||||
// Return if already initialized
|
// Return if already initialized
|
||||||
if (g_RealWiiMoteInitialized)
|
if (g_RealWiiMoteInitialized)
|
||||||
return g_NumberOfWiiMotes;
|
return g_NumberOfWiiMotes;
|
||||||
|
NeedsConnect.Init();
|
||||||
|
Connected.Init();
|
||||||
|
|
||||||
// Clear the wiimote classes
|
// Clear the wiimote classes
|
||||||
memset(g_WiiMotes, 0, sizeof(CWiiMote*) * MAX_WIIMOTES);
|
memset(g_WiiMotes, 0, sizeof(CWiiMote*) * MAX_WIIMOTES);
|
||||||
|
@ -329,7 +333,15 @@ int Initialize()
|
||||||
g_NumberOfWiiMotes = wiiuse_find(g_WiiMotesFromWiiUse, MAX_WIIMOTES, 5);
|
g_NumberOfWiiMotes = wiiuse_find(g_WiiMotesFromWiiUse, MAX_WIIMOTES, 5);
|
||||||
DEBUG_LOG(WIIMOTE, "Found No of Wiimotes: %i", g_NumberOfWiiMotes);
|
DEBUG_LOG(WIIMOTE, "Found No of Wiimotes: %i", g_NumberOfWiiMotes);
|
||||||
if (g_NumberOfWiiMotes > 0)
|
if (g_NumberOfWiiMotes > 0)
|
||||||
|
{
|
||||||
g_RealWiiMotePresent = true;
|
g_RealWiiMotePresent = true;
|
||||||
|
// Create a new thread for listening for Wiimote data
|
||||||
|
// and also connecting in Linux/OSX.
|
||||||
|
// Windows connects to Wiimote in the wiiuse_find function
|
||||||
|
g_pReadThread = new Common::Thread(ReadWiimote_ThreadFunc, NULL);
|
||||||
|
NeedsConnect.Set();
|
||||||
|
Connected.Wait();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -349,21 +361,10 @@ int Initialize()
|
||||||
// Will test soon
|
// Will test soon
|
||||||
//wiiuse_set_timeout(g_WiiMotesFromWiiUse, g_NumberOfWiiMotes, 220, 220);
|
//wiiuse_set_timeout(g_WiiMotesFromWiiUse, g_NumberOfWiiMotes, 220, 220);
|
||||||
|
|
||||||
// WiiUse initializes the Wiimotes in Windows right from the wiiuse_find function
|
|
||||||
// The Functionality should REALLY be changed
|
|
||||||
#ifndef _WIN32
|
|
||||||
int Connect;
|
|
||||||
Connect = wiiuse_connect(g_WiiMotesFromWiiUse, MAX_WIIMOTES);
|
|
||||||
DEBUG_LOG(WIIMOTE, "Connected: %i", Connect);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// If we are connecting from the config window without a game running we set the LEDs
|
// If we are connecting from the config window without a game running we set the LEDs
|
||||||
if (g_EmulatorState != PLUGIN_EMUSTATE_PLAY && g_RealWiiMotePresent)
|
if (g_EmulatorState != PLUGIN_EMUSTATE_PLAY && g_RealWiiMotePresent)
|
||||||
FlashLights(true);
|
FlashLights(true);
|
||||||
|
|
||||||
// Create a new thread and start listening for Wiimote data
|
|
||||||
if (g_NumberOfWiiMotes > 0)
|
|
||||||
g_pReadThread = new Common::Thread(ReadWiimote_ThreadFunc, NULL);
|
|
||||||
|
|
||||||
/* Allocate memory and copy the Wiimote eeprom accelerometer neutral values
|
/* Allocate memory and copy the Wiimote eeprom accelerometer neutral values
|
||||||
to g_Eeprom. Unlike with and extension we have to do this here, because
|
to g_Eeprom. Unlike with and extension we have to do this here, because
|
||||||
|
@ -534,6 +535,15 @@ THREAD_RETURN ReadWiimote_ThreadFunc(void* arg)
|
||||||
{
|
{
|
||||||
g_StopThreadTemporary.Init();
|
g_StopThreadTemporary.Init();
|
||||||
g_StartThread.Init();
|
g_StartThread.Init();
|
||||||
|
NeedsConnect.Wait();
|
||||||
|
#ifndef _WIN32
|
||||||
|
int Connect;
|
||||||
|
// WiiUse initializes the Wiimotes in Windows right from the wiiuse_find function
|
||||||
|
// The Functionality should REALLY be changed
|
||||||
|
Connect = wiiuse_connect(g_WiiMotesFromWiiUse, MAX_WIIMOTES);
|
||||||
|
DEBUG_LOG(WIIMOTE, "Connected: %i", Connect);
|
||||||
|
#endif
|
||||||
|
Connected.Set();
|
||||||
|
|
||||||
while (!g_Shutdown)
|
while (!g_Shutdown)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue