From deffc957948dd86306a6845c24db42fca7d71288 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 16 Jul 2010 03:43:11 +0000 Subject: [PATCH] New Wiimote Plugin: Moved Linux cursor position code into ControllerInterface/Xlib. (absolute cursor position can be mapped to something other than IR camera) (code fixed by Glennrics) Put the UDP Wiimote dialog's Update Buttons,Update IR,Update Nunchuk... checkboxes in an "Update" group box. Fixed some Linux config dialog problems. (thanks Glennrics again) Some other minor cleanup in ControllerInterface. (changed some std::string/stringstream to char[] where possible) Removed a warning in DX11 plugin. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5880 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Core/Src/Core.cpp | 4 ++ Source/Core/DolphinWX/Src/FrameTools.cpp | 3 +- Source/Core/InputCommon/Src/ControllerEmu.cpp | 33 --------- Source/Core/InputCommon/Src/ControllerEmu.h | 16 +---- .../DInput/DInputJoystick.cpp | 13 ++-- .../DInput/DInputKeyboardMouse.cpp | 12 ++-- .../Src/ControllerInterface/SDL/SDL.cpp | 10 +-- .../Src/ControllerInterface/XInput/XInput.cpp | 2 +- .../Src/ControllerInterface/Xlib/Xlib.cpp | 68 +++++++++++++------ .../Src/ControllerInterface/Xlib/Xlib.h | 30 ++++++-- Source/Core/InputCommon/Src/UDPWrapper.cpp | 62 ++++++++--------- Source/Core/InputUICommon/Src/ConfigDiag.cpp | 12 +++- .../Plugins/Plugin_VideoDX11/Src/D3DBase.cpp | 1 + .../Src/WiimoteEmu/WiimoteEmu.cpp | 2 +- .../Plugin_WiimoteNew/Src/WiimoteNew.cpp | 8 ++- 15 files changed, 146 insertions(+), 130 deletions(-) diff --git a/Source/Core/Core/Src/Core.cpp b/Source/Core/Core/Src/Core.cpp index 48f1b9fa02..344c878649 100644 --- a/Source/Core/Core/Src/Core.cpp +++ b/Source/Core/Core/Src/Core.cpp @@ -397,7 +397,11 @@ THREAD_RETURN EmuThread(void *pArg) Plugins.GetDSP()->Initialize((void *)&dspInit); +#if defined(HAVE_X11) && HAVE_X11 + GCPad_Init(g_pXWindow); +#else GCPad_Init(g_pWindowHandle); +#endif // Load and Init WiimotePlugin - only if we are booting in wii mode if (_CoreParameter.bWii) diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index 6297eb3855..4a93e23d66 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -955,7 +955,8 @@ void CFrame::OnPluginPAD(wxCommandEvent& WXUNUSED (event)) else { #if defined(HAVE_X11) && HAVE_X11 - GCPad_Init(X11Utils::XDisplayFromHandle(GetHandle())); + Window win = X11Utils::XWindowFromHandle(GetHandle()); + GCPad_Init(&win); #else GCPad_Init(GetHandle()); #endif diff --git a/Source/Core/InputCommon/Src/ControllerEmu.cpp b/Source/Core/InputCommon/Src/ControllerEmu.cpp index 78b597f3a5..e57ffc2d0b 100644 --- a/Source/Core/InputCommon/Src/ControllerEmu.cpp +++ b/Source/Core/InputCommon/Src/ControllerEmu.cpp @@ -319,36 +319,3 @@ void ControllerEmu::LoadDefaults(const ControllerInterface &ciface) UpdateDefaultDevice(); } } - -// TODO: remove this hackery -void GetMousePos(float& x, float& y, const SWiimoteInitialize* const wiimote_initialize) -{ -#if defined(HAVE_X11) && HAVE_X11 - - unsigned int win_width = 2, win_height = 2; - int root_x, root_y; - struct - { - int x, y; - } point = { 1, 1 }; - - Display* const wm_display = (Display*)wiimote_initialize->hWnd; - Window glwin = *(Window *)wiimote_initialize->pXWindow; - - XWindowAttributes win_attribs; - XGetWindowAttributes (wm_display, glwin, &win_attribs); - win_width = win_attribs.width; - win_height = win_attribs.height; - Window root_dummy, child_win; - unsigned int mask; - XQueryPointer(wm_display, glwin, &root_dummy, &child_win, &root_x, &root_y, &point.x, &point.y, &mask); - - // Return the mouse position as a range from -1 to 1 - x = (float)point.x / (float)win_width * 2 - 1; - y = (float)point.y / (float)win_height * 2 - 1; -#else - - x = 0; - y = 0; -#endif -} diff --git a/Source/Core/InputCommon/Src/ControllerEmu.h b/Source/Core/InputCommon/Src/ControllerEmu.h index 2051c8f18f..943c001d18 100644 --- a/Source/Core/InputCommon/Src/ControllerEmu.h +++ b/Source/Core/InputCommon/Src/ControllerEmu.h @@ -56,8 +56,6 @@ const char * const named_directions[] = "Right" }; -void GetMousePos(float& x, float& y, const SWiimoteInitialize* const wiimote_initialize); - class ControllerEmu { public: @@ -373,18 +371,8 @@ public: } else { - float xx, yy; - GetMousePos(xx, yy, wiimote_initialize); - - // use mouse cursor, or user defined mapping if they have something mapped - // this if seems horrible - if ( controls[0]->control_ref->BoundCount() || controls[1]->control_ref->BoundCount() ) - yy = controls[0]->control_ref->State() - controls[1]->control_ref->State(); - else - yy = -yy; - - if ( controls[2]->control_ref->BoundCount() || controls[3]->control_ref->BoundCount() ) - xx = controls[3]->control_ref->State() - controls[2]->control_ref->State(); + float yy = controls[0]->control_ref->State() - controls[1]->control_ref->State(); + float xx = controls[3]->control_ref->State() - controls[2]->control_ref->State(); // adjust cursor according to settings if (adjusted) diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp index 2eac4be616..0f43a47a53 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp @@ -474,9 +474,9 @@ std::string Joystick::Axis::GetName() const { std::ostringstream ss; // axis - if ( m_index < 6 ) + if (m_index < 6) { - ss << "Axis " << "XYZ"[m_index%3]; + ss << "Axis " << (char)('X' + (m_index % 3)); if ( m_index > 2 ) ss << 'r'; } @@ -484,15 +484,16 @@ std::string Joystick::Axis::GetName() const else ss << "Slider " << m_index-6; - ss << ( m_range>0 ? '+' : '-' ); + ss << (m_range<0 ? '-' : '+'); return ss.str(); } std::string Joystick::Hat::GetName() const { - std::ostringstream ss; - ss << "Hat " << m_index << ' ' << "NESW"[m_direction]; - return ss.str(); + static char tmpstr[] = "Hat . ."; + tmpstr[4] = (char)('0' + m_index); + tmpstr[6] = "NESW"[m_direction]; + return tmpstr; } std::string Joystick::Force::GetName() const diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp index 598936d121..33101c2507 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -262,20 +262,22 @@ std::string KeyboardMouse::Key::GetName() const std::string KeyboardMouse::Button::GetName() const { - return std::string("Button ") + char('0'+m_index); + return std::string("Button ") + char('0' + m_index); } std::string KeyboardMouse::Axis::GetName() const { - std::string tmpstr("Axis "); - tmpstr += "XYZ"[m_index]; tmpstr += (m_range>0 ? '+' : '-'); + static char tmpstr[] = "Axis .."; + tmpstr[5] = (char)('X' + m_index); + tmpstr[6] = (m_range<0 ? '-' : '+'); return tmpstr; } std::string KeyboardMouse::Cursor::GetName() const { - std::string tmpstr("Cursor "); - tmpstr += "XY"[m_index]; tmpstr += (m_positive ? '+' : '-'); + static char tmpstr[] = "Cursor .."; + tmpstr[7] = (char)('X' + m_index); + tmpstr[8] = (m_positive ? '+' : '-'); return tmpstr; } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp index 8c6d8e66dc..66793f1139 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp @@ -262,15 +262,17 @@ std::string Joystick::Button::GetName() const std::string Joystick::Axis::GetName() const { std::ostringstream ss; - ss << "Axis " << m_index << ( m_range>0 ? '+' : '-' ); + ss << "Axis " << m_index << (m_range<0 ? '-' : '+'); return ss.str(); } std::string Joystick::Hat::GetName() const { - std::ostringstream ss; - ss << "Hat " << m_index << ' ' << "NESW"[m_direction]; - return ss.str(); + static char tmpstr[] = "Hat . ."; + // I don't think more than 10 hats are supported + tmpstr[4] = (char)('0' + m_index); + tmpstr[6] = "NESW"[m_direction]; + return tmpstr; } ControlState Joystick::Button::GetState( SDL_Joystick* const js ) const diff --git a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp index 1ae5b517af..526c6ffd9a 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp @@ -170,7 +170,7 @@ std::string Device::Button::GetName() const std::string Device::Axis::GetName() const { - return std::string(named_axes[m_index]) + ( m_range>0 ? '+' : '-' ); + return std::string(named_axes[m_index]) + (m_range<0 ? '-' : '+'); } std::string Device::Trigger::GetName() const diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp index 0eac61eac2..49574900a6 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp @@ -7,16 +7,14 @@ namespace Xlib void Init(std::vector& devices, void* const hwnd) { - // mouse will be added to this, Keyboard class will be turned into KeyboardMouse - // single device for combined keyboard/mouse, this will allow combinations like shift+click more easily - devices.push_back(new Keyboard((Display*)hwnd)); + devices.push_back(new KeyboardMouse(*(Window*)hwnd)); } -Keyboard::Keyboard(Display* display) : m_display(display) +KeyboardMouse::KeyboardMouse(Window window) : m_window(window) { memset(&m_state, 0, sizeof(m_state)); - m_window = DefaultRootWindow(m_display); + m_display = XOpenDisplay(NULL); int min_keycode, max_keycode; XDisplayKeycodes(m_display, &min_keycode, &max_keycode); @@ -37,24 +35,28 @@ Keyboard::Keyboard(Display* display) : m_display(display) AddInput(new Button(Button3Mask)); AddInput(new Button(Button4Mask)); AddInput(new Button(Button5Mask)); + + // Mouse Cursor, X-/+ and Y-/+ + for (unsigned int i=0; i<4; ++i) + AddInput(new Cursor(!!(i&2), !!(i&1))); } -Keyboard::~Keyboard() +KeyboardMouse::~KeyboardMouse() { + XCloseDisplay(m_display); } - -ControlState Keyboard::GetInputState(const ControllerInterface::Device::Input* const input) const +ControlState KeyboardMouse::GetInputState(const ControllerInterface::Device::Input* const input) const { return ((Input*)input)->GetState(&m_state); } -void Keyboard::SetOutputState(const ControllerInterface::Device::Output* const output, const ControlState state) +void KeyboardMouse::SetOutputState(const ControllerInterface::Device::Output* const output, const ControlState state) { } -bool Keyboard::UpdateInput() +bool KeyboardMouse::UpdateInput() { XQueryKeymap(m_display, m_state.keyboard); @@ -62,33 +64,40 @@ bool Keyboard::UpdateInput() Window root, child; XQueryPointer(m_display, m_window, &root, &child, &root_x, &root_y, &win_x, &win_y, &m_state.buttons); + // update mouse cursor + XWindowAttributes win_attribs; + XGetWindowAttributes(m_display, m_window, &win_attribs); + + // the mouse position as a range from -1 to 1 + m_state.cursor.x = (float)win_x / (float)win_attribs.width * 2 - 1; + m_state.cursor.y = (float)win_y / (float)win_attribs.height * 2 - 1; + return true; } -bool Keyboard::UpdateOutput() +bool KeyboardMouse::UpdateOutput() { return true; } -std::string Keyboard::GetName() const +std::string KeyboardMouse::GetName() const { - return "Keyboard"; - //return "Keyboard Mouse"; // change to this later + return "Keyboard Mouse"; } -std::string Keyboard::GetSource() const +std::string KeyboardMouse::GetSource() const { return "Xlib"; } -int Keyboard::GetId() const +int KeyboardMouse::GetId() const { return 0; } -Keyboard::Key::Key(Display* const display, KeyCode keycode) +KeyboardMouse::Key::Key(Display* const display, KeyCode keycode) : m_display(display), m_keycode(keycode) { int i = 0; @@ -112,22 +121,35 @@ Keyboard::Key::Key(Display* const display, KeyCode keycode) m_keyname = std::string(XKeysymToString(keysym)); } -ControlState Keyboard::Key::GetState(const State* const state) const +ControlState KeyboardMouse::Key::GetState(const State* const state) const { return (state->keyboard[m_keycode/8] & (1 << (m_keycode%8))) != 0; } -ControlState Keyboard::Button::GetState(const State* const state) const +ControlState KeyboardMouse::Button::GetState(const State* const state) const { return ((state->buttons & m_index) > 0); } -std::string Keyboard::Key::GetName() const +ControlState KeyboardMouse::Cursor::GetState(const State* const state) const +{ + return std::max(0.0f, ControlState((&state->cursor.x)[m_index]) / (m_positive ? 1.0f : -1.0f)); +} + +std::string KeyboardMouse::Key::GetName() const { return m_keyname; } -std::string Keyboard::Button::GetName() const +std::string KeyboardMouse::Cursor::GetName() const +{ + static char tmpstr[] = "Cursor .."; + tmpstr[7] = (char)('X' + m_index); + tmpstr[8] = (m_positive ? '+' : '-'); + return tmpstr; +} + +std::string KeyboardMouse::Button::GetName() const { char button = '0'; switch (m_index) @@ -139,7 +161,9 @@ std::string Keyboard::Button::GetName() const case Button5Mask: button = '5'; break; } - return std::string("Button ") + button; + static char tmpstr[] = "Button ."; + tmpstr[7] = button; + return tmpstr; } } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h index d9d07f17ba..ab5b8cca42 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h @@ -12,7 +12,7 @@ namespace Xlib void Init(std::vector& devices, void* const hwnd); -class Keyboard : public ControllerInterface::Device +class KeyboardMouse : public ControllerInterface::Device { friend class ControllerInterface; friend class ControllerInterface::ControlReference; @@ -23,11 +23,15 @@ protected: { char keyboard[32]; unsigned int buttons; + struct + { + float x, y; + } cursor; }; class Input : public ControllerInterface::Device::Input { - friend class Keyboard; + friend class KeyboardMouse; protected: virtual ControlState GetState(const State* const state) const = 0; @@ -35,7 +39,7 @@ protected: class Key : public Input { - friend class Keyboard; + friend class KeyboardMouse; public: std::string GetName() const; @@ -53,7 +57,7 @@ protected: class Button : public Input { - friend class Keyboard; + friend class KeyboardMouse; public: std::string GetName() const; @@ -65,6 +69,20 @@ protected: private: const unsigned int m_index; }; + + class Cursor : public Input + { + friend class KeyboardMouse; + public: + std::string GetName() const; + bool IsDetectable() { return false; } + protected: + Cursor(const unsigned int index, const bool positive) : m_index(index), m_positive(positive) {} + ControlState GetState(const State* const state) const; + private: + const unsigned int m_index; + const bool m_positive; + }; bool UpdateInput(); bool UpdateOutput(); @@ -73,8 +91,8 @@ protected: void SetOutputState(const ControllerInterface::Device::Output* const output, const ControlState state); public: - Keyboard(Display* display); - ~Keyboard(); + KeyboardMouse(Window window); + ~KeyboardMouse(); std::string GetName() const; std::string GetSource() const; diff --git a/Source/Core/InputCommon/Src/UDPWrapper.cpp b/Source/Core/InputCommon/Src/UDPWrapper.cpp index ec020ee575..20ae3ade19 100644 --- a/Source/Core/InputCommon/Src/UDPWrapper.cpp +++ b/Source/Core/InputCommon/Src/UDPWrapper.cpp @@ -116,34 +116,34 @@ UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) : wxDialog(parent, -1, wxT("UDP Wiimote"), wxDefaultPosition, wxDefaultSize), wrp(_wrp) { - wxBoxSizer * outer_sizer = new wxBoxSizer(wxVERTICAL); - wxBoxSizer * sizer1 = new wxBoxSizer(wxVERTICAL); - wxBoxSizer * sizer2 = new wxBoxSizer(wxVERTICAL); - outer_sizer ->Add(sizer1, 0, wxUP | wxLEFT| wxRIGHT | wxEXPAND, 10); - outer_sizer ->Add(sizer2, 1, wxALL | wxEXPAND, 10); + wxBoxSizer *const outer_sizer = new wxBoxSizer(wxVERTICAL); + wxBoxSizer *const sizer1 = new wxBoxSizer(wxVERTICAL); + wxStaticBoxSizer *const sizer2 = new wxStaticBoxSizer(wxVERTICAL, this, wxT("Update")); + + outer_sizer->Add(sizer1, 0, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, 5); + outer_sizer->Add(sizer2, 1, wxLEFT | wxRIGHT | wxEXPAND, 10); enable = new wxCheckBox(this,wxID_ANY,wxT("Enable")); - butt = new wxCheckBox(this,wxID_ANY,wxT("Update Buttons")); - accel = new wxCheckBox(this,wxID_ANY,wxT("Update Acceleration")); - point = new wxCheckBox(this,wxID_ANY,wxT("Update IR Pointer")); - nun = new wxCheckBox(this,wxID_ANY,wxT("Update Nunchuk")); - nunaccel = new wxCheckBox(this,wxID_ANY,wxT("Update Nunchuk Acceleration")); - + butt = new wxCheckBox(this,wxID_ANY,wxT("Buttons")); + accel = new wxCheckBox(this,wxID_ANY,wxT("Acceleration")); + point = new wxCheckBox(this,wxID_ANY,wxT("IR Pointer")); + nun = new wxCheckBox(this,wxID_ANY,wxT("Nunchuk")); + nunaccel = new wxCheckBox(this,wxID_ANY,wxT("Nunchuk Acceleration")); - wxButton * ok_butt = new wxButton(this,wxID_ANY,wxT("OK")); + wxButton *const ok_butt = new wxButton(this,wxID_ANY,wxT("OK")); - wxBoxSizer * port_sizer = new wxBoxSizer(wxHORIZONTAL); - port_sizer->Add(new wxStaticText(this , wxID_ANY, wxT("UDP Port:")),0,wxALIGN_CENTER); - port_tbox = new wxTextCtrl(this,wxID_ANY,wxString::FromUTF8(wrp->port.c_str())); - port_sizer->Add(port_tbox,1, wxLEFT | wxEXPAND , 5); + wxBoxSizer *const port_sizer = new wxBoxSizer(wxHORIZONTAL); + port_sizer->Add(new wxStaticText(this, wxID_ANY, wxT("UDP Port:")), 0, wxALIGN_CENTER); + port_tbox = new wxTextCtrl(this, wxID_ANY, wxString::FromUTF8(wrp->port.c_str())); + port_sizer->Add(port_tbox, 1, wxLEFT | wxEXPAND , 5); - _connect_macro_(enable,UDPConfigDiag::ChangeState ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(butt,UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(accel,UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(point,UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(nun,UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(nunaccel,UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); - _connect_macro_(ok_butt,UDPConfigDiag::OKPressed, wxEVT_COMMAND_BUTTON_CLICKED, this); + _connect_macro_(enable, UDPConfigDiag::ChangeState ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(butt, UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(accel, UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(point, UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(nun, UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(nunaccel, UDPConfigDiag::ChangeUpdateFlags ,wxEVT_COMMAND_CHECKBOX_CLICKED, this); + _connect_macro_(ok_butt, UDPConfigDiag::OKPressed, wxEVT_COMMAND_BUTTON_CLICKED, this); _connect_macro_(port_tbox, UDPConfigDiag::ChangeState, wxEVT_COMMAND_TEXT_UPDATED, this); enable->SetValue(wrp->udpEn); @@ -153,16 +153,16 @@ UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) : nun->SetValue(wrp->updNun); nunaccel->SetValue(wrp->updNunAccel); - sizer1->Add(enable,1,wxALL | wxEXPAND,5); - sizer1->Add(port_sizer, 1,wxDOWN | wxLEFT| wxRIGHT | wxEXPAND,5); + sizer1->Add(enable, 1, wxALL | wxEXPAND, 5); + sizer1->Add(port_sizer, 1, wxBOTTOM | wxLEFT| wxRIGHT | wxEXPAND, 5); - sizer2->Add(butt,1,wxALL | wxEXPAND,5); - sizer2->Add(accel,1,wxALL | wxEXPAND,5); - sizer2->Add(point,1,wxALL | wxEXPAND,5); - sizer2->Add(nun,1,wxALL | wxEXPAND,5); - sizer2->Add(nunaccel,1,wxALL | wxEXPAND,5); + sizer2->Add(butt, 1, wxALL | wxEXPAND, 5); + sizer2->Add(accel, 1, wxALL | wxEXPAND, 5); + sizer2->Add(point, 1, wxALL | wxEXPAND, 5); + sizer2->Add(nun, 1, wxALL | wxEXPAND, 5); + sizer2->Add(nunaccel, 1, wxALL | wxEXPAND, 5); - outer_sizer->Add(ok_butt,0, wxDOWN | wxLEFT| wxRIGHT | wxALIGN_RIGHT,10); + outer_sizer->Add(ok_butt, 0, wxALL | wxALIGN_RIGHT, 5); SetSizerAndFit(outer_sizer); Layout(); diff --git a/Source/Core/InputUICommon/Src/ConfigDiag.cpp b/Source/Core/InputUICommon/Src/ConfigDiag.cpp index fc84eec5b5..208fdcf1ca 100644 --- a/Source/Core/InputUICommon/Src/ConfigDiag.cpp +++ b/Source/Core/InputUICommon/Src/ConfigDiag.cpp @@ -379,7 +379,7 @@ void ControlDialog::AppendControl(wxCommandEvent& event) // o boy!, hax const wxString lbl = ((wxButton*)event.GetEventObject())->GetLabel(); - wxString expr = textctrl->GetLabel(); + wxString expr = textctrl->GetValue(); // append the operator to the expression if (wxT('!') == lbl[0] || false == expr.empty()) @@ -449,6 +449,9 @@ void ControlDialog::DetectControl(wxCommandEvent& event) { btn->SetLabel(wxT("[ waiting ]")); + // apparently, this makes the "waiting" text work on Linux + wxYield(); + m_plugin.controls_crit.Enter(); // enter ControllerInterface::Device::Control* const ctrl = control_reference->Detect(DETECT_WAIT_TIME, dev); m_plugin.controls_crit.Leave(); // leave @@ -471,6 +474,9 @@ void GamepadPage::DetectControl( wxCommandEvent& event ) { btn->SetLabel(wxT("[ waiting ]")); + // apparently, this makes the "waiting" text work on Linux + wxYield(); + m_plugin.controls_crit.Enter(); // enter ControllerInterface::Device::Control* const ctrl = btn->control_reference->Detect(DETECT_WAIT_TIME, dev); @@ -899,8 +905,8 @@ GamepadPage::GamepadPage( wxWindow* parent, InputPlugin& plugin, const unsigned device_sbox->Add( device_cbox, 1, wxLEFT|wxRIGHT, 3 ); device_sbox->Add( refresh_button, 0, wxRIGHT|wxBOTTOM, 3 ); - wxButton* const default_button = new wxButton( this, -1, wxT("Default"), wxDefaultPosition, wxSize(48,-1) ); - wxButton* const clearall_button = new wxButton( this, -1, wxT("Clear"), wxDefaultPosition, wxSize(48,-1) ); + wxButton* const default_button = new wxButton(this, -1, wxT("Default"), wxDefaultPosition, wxSize(48,-1)); + wxButton* const clearall_button = new wxButton(this, -1, wxT("Clear"), wxDefaultPosition, wxSize(58,-1)); wxStaticBoxSizer* const clear_sbox = new wxStaticBoxSizer( wxHORIZONTAL, this, wxT("Reset") ); clear_sbox->Add(default_button, 1, wxLEFT, 3); diff --git a/Source/Plugins/Plugin_VideoDX11/Src/D3DBase.cpp b/Source/Plugins/Plugin_VideoDX11/Src/D3DBase.cpp index cfbca35f65..cd55ac2b11 100644 --- a/Source/Plugins/Plugin_VideoDX11/Src/D3DBase.cpp +++ b/Source/Plugins/Plugin_VideoDX11/Src/D3DBase.cpp @@ -255,6 +255,7 @@ unsigned int GetMaxTextureSize() case D3D_FEATURE_LEVEL_9_2: case D3D_FEATURE_LEVEL_9_1: + default: return 2048; } } diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp index ef4889909e..3cff70697d 100644 --- a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp @@ -729,7 +729,7 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface) set_control(m_shake, i, "Button 2"); // IR -#ifdef _WIN32 +#ifndef __APPLE__ set_control(m_ir, 0, "Cursor Y-"); set_control(m_ir, 1, "Cursor Y+"); set_control(m_ir, 2, "Cursor X-"); diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteNew.cpp b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteNew.cpp index 6818053fdf..6acf6538c3 100644 --- a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteNew.cpp +++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteNew.cpp @@ -281,9 +281,7 @@ void DllConfig(HWND _hParent) { #if defined(HAVE_X11) && HAVE_X11 Window win = GDK_WINDOW_XID(GTK_WIDGET(_hParent)->window); - g_WiimoteInitialize.hWnd = GDK_WINDOW_XDISPLAY(GTK_WIDGET(_hParent)->window); - g_WiimoteInitialize.pXWindow = &win; - InitPlugin(g_WiimoteInitialize.hWnd); + InitPlugin(&win); #else InitPlugin(_hParent); #endif @@ -348,7 +346,11 @@ void Initialize(void *init) { g_WiimoteInitialize = *(SWiimoteInitialize*)init; if ( false == g_plugin.controller_interface.IsInit() ) +#if defined(HAVE_X11) && HAVE_X11 + InitPlugin( g_WiimoteInitialize.pXWindow ); +#else InitPlugin( g_WiimoteInitialize.hWnd ); +#endif } // ___________________________________________________________________________