fix annoying debug break in win32. some cleanup

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2639 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Shawn Hoffman 2009-03-10 05:43:18 +00:00
parent 79e14b4077
commit 19921c057a
3 changed files with 142 additions and 155 deletions

View File

@ -89,11 +89,11 @@ void CPUInfo::Detect()
OS64bit = true; OS64bit = true;
#endif #endif
num_cores = 1; num_cores = 1;
#ifdef _WIN32 #ifdef _WIN32
#ifdef _M_IX86 #ifdef _M_IX86
bool f64 = false; BOOL f64 = false;
OS64bit = IsWow64Process(GetCurrentProcess(), (PBOOL)(&f64)) && f64; OS64bit = IsWow64Process(GetCurrentProcess(), &f64);
#endif #endif
#endif #endif

View File

@ -1,4 +1,4 @@
// Copyright (C) 2003-2008 Dolphin Project. // Copyright (C) 2003-2009 Dolphin Project.
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@ -14,164 +14,151 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> #include <windows.h>
#endif #endif
#include "Common.h"
#include "../Core.h"
#include "GBAPipe.h" #include "GBAPipe.h"
#include "../PowerPC/PowerPC.h"
#include "CommandProcessor.h"
#include "../Host.h"
#ifdef _WIN32 #ifdef _WIN32
namespace GBAPipe namespace GBAPipe
{ {
HANDLE m_hPipe; HANDLE m_hPipe;
bool m_bIsServer; bool m_bIsServer;
bool m_bEnabled; bool m_bEnabled;
u32 m_BlockStart;
#define PIPENAME "\\\\.\\pipe\\gbapipe" #define PIPENAME "\\\\.\\pipe\\gbapipe"
void SetBlockStart(u32 addr) void StartServer()
{
if (m_bEnabled)
return;
//TODO: error checking
m_hPipe = CreateNamedPipe(
PIPENAME,
PIPE_ACCESS_DUPLEX, // client and server can both r+w
PIPE_WAIT |/* PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,*/ PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,
1, //maxinst
0x1000, //outbufsize
0x1000, //inbufsize
INFINITE, //timeout
0);
if (m_hPipe == INVALID_HANDLE_VALUE)
{ {
m_BlockStart = addr; INFO_LOG(SERIALINTERFACE, "Failed to create pipe.");
}
else
{
INFO_LOG(SERIALINTERFACE, "Pipe %s created.", PIPENAME);
} }
void StartServer() m_bIsServer = true;
{ m_bEnabled = true;
if (m_bEnabled)
return;
//TODO: error checking
m_hPipe = CreateNamedPipe(
PIPENAME,
PIPE_ACCESS_DUPLEX, // client and server can both r+w
PIPE_WAIT |/* PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,*/ PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,
1, //maxinst
0x1000, //outbufsize
0x1000, //inbufsize
INFINITE, //timeout
0);
if (m_hPipe == INVALID_HANDLE_VALUE)
{
INFO_LOG(SERIALINTERFACE, "Failed to create pipe.");
}
else
{
INFO_LOG(SERIALINTERFACE, "Pipe %s created.", PIPENAME);
}
m_bIsServer = true;
m_bEnabled = true;
}
void ConnectAsClient()
{
if (m_bEnabled)
return;
//TODO: error checking
m_hPipe = CreateFile(
PIPENAME,
GENERIC_READ|GENERIC_WRITE,
0, //share
NULL,
OPEN_EXISTING,
0,
NULL);
if (m_hPipe == INVALID_HANDLE_VALUE)
{
INFO_LOG(SERIALINTERFACE, "Failed to connect to pipe. %08x (2 = file not found)", GetLastError());
}
m_bEnabled = true;
m_bIsServer = false;
}
void Stop()
{
if (m_bEnabled)
{
if (m_bIsServer)
DisconnectNamedPipe(m_hPipe);
CloseHandle(m_hPipe);
m_bEnabled = false;
}
}
void Read(u8& data)
{
if (!m_bEnabled)
return;
u32 read;
memset(&data, 0x00, sizeof(data)); // pad with zeros for now
HRESULT result = ReadFile(m_hPipe, &data, sizeof(data), (LPDWORD)&read, FALSE);
if (FAILED(result)/* || read != sizeof(data)*/)
{
INFO_LOG(SERIALINTERFACE, "Failed to read pipe %s", PIPENAME);
Stop();
}
else
{
INFO_LOG(SERIALINTERFACE, "read %x bytes: 0x%02x", read, data);
}
}
void Write(u8 data)
{
if (!m_bEnabled)
return;
u32 written;
HRESULT result = WriteFile(m_hPipe, &data, sizeof(data), (LPDWORD)&written,FALSE);
if (FAILED(result))
{
INFO_LOG(SERIALINTERFACE, "Failed to write to pipe %s", PIPENAME);
Stop();
}
else
{
INFO_LOG(SERIALINTERFACE, "Wrote %x bytes: 0x%02x", written, data);
}
}
bool IsEnabled()
{
return m_bEnabled;
}
bool IsServer()
{
return m_bIsServer;
}
} }
void ConnectAsClient()
{
if (m_bEnabled)
return;
//TODO: error checking
m_hPipe = CreateFile(
PIPENAME,
GENERIC_READ|GENERIC_WRITE,
0, //share
NULL,
OPEN_EXISTING,
0,
NULL);
if (m_hPipe == INVALID_HANDLE_VALUE)
{
INFO_LOG(SERIALINTERFACE, "Failed to connect to pipe. %08x (2 = file not found)", GetLastError());
}
m_bEnabled = true;
m_bIsServer = false;
}
void Stop()
{
if (m_bEnabled)
{
if (m_bIsServer)
DisconnectNamedPipe(m_hPipe);
CloseHandle(m_hPipe);
m_bEnabled = false;
}
}
void Read(u8& data)
{
if (!m_bEnabled)
return;
u32 read;
memset(&data, 0x00, sizeof(data)); // pad with zeros for now
HRESULT result = ReadFile(m_hPipe, &data, sizeof(data), (LPDWORD)&read, FALSE);
if (FAILED(result)/* || read != sizeof(data)*/)
{
INFO_LOG(SERIALINTERFACE, "Failed to read pipe %s", PIPENAME);
Stop();
}
else
{
INFO_LOG(SERIALINTERFACE, "read %x bytes: 0x%02x", read, data);
}
}
void Write(u8 data)
{
if (!m_bEnabled)
return;
u32 written;
HRESULT result = WriteFile(m_hPipe, &data, sizeof(data), (LPDWORD)&written,FALSE);
if (FAILED(result))
{
INFO_LOG(SERIALINTERFACE, "Failed to write to pipe %s", PIPENAME);
Stop();
}
else
{
INFO_LOG(SERIALINTERFACE, "Wrote %x bytes: 0x%02x", written, data);
}
}
bool IsEnabled()
{
return m_bEnabled;
}
bool IsServer()
{
return m_bIsServer;
}
} // namespace GBAPipe
#else #else
namespace GBAPipe namespace GBAPipe
{ {
void StartServer() { } void StartServer() { }
void ConnectAsClient() { } void ConnectAsClient() { }
void Stop() { } void Stop() { }
void Read(u8& data) { } void Read(u8& data) { }
void Write(u8 data) { } void Write(u8 data) { }
bool IsEnabled() { return false; } bool IsEnabled() { return false; }
bool IsServer() { return false; } bool IsServer() { return false; }
} } // namespace GBAPipe
// #error Provide a GBAPipe implementation or dummy it out, please
#endif #endif

View File

@ -1,4 +1,4 @@
// Copyright (C) 2003-2008 Dolphin Project. // Copyright (C) 2003-2009 Dolphin Project.
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@ -26,26 +26,26 @@
namespace GBAPipe namespace GBAPipe
{ {
// start the server
void StartServer();
// connect as client // start the server
void ConnectAsClient(); void StartServer();
// stop // connect as client
void Stop(); void ConnectAsClient();
// Transfer funcs // stop
void Read(u8& data); void Stop();
void Write(u8 data);
// IsEnabled // Transfer funcs
bool IsEnabled(); void Read(u8& data);
void Write(u8 data);
// IsServer // IsEnabled
bool IsServer(); bool IsEnabled();
void SetBlockStart(u32 addr); // IsServer
} bool IsServer();
} // namespace GBAPipe
#endif #endif