mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-22 14:15:38 +00:00
Skip controller config if known device is added after startup
Fix for problems like this: http://blog.petrockblock.com/forums/topic/retropie-wont-recognize-ps3-controller-unless-ps-button-is-hit-before-es-start/ http://blog.petrockblock.com/forums/topic/elegent-method-of-detecting-wireless-controller-before-starting-es/ No controller found message pops up if no controller is connected. If a known controller is connected and any button is pressed system selection menu will show up instantly.
This commit is contained in:
parent
64a208ff59
commit
cdda6f6dc1
|
@ -8,11 +8,15 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <boost/locale.hpp>
|
||||||
|
|
||||||
#define HOLD_TIME 1000
|
#define HOLD_TIME 1000
|
||||||
|
|
||||||
using namespace Eigen;
|
using namespace Eigen;
|
||||||
|
|
||||||
|
namespace fs = boost::filesystem;
|
||||||
|
|
||||||
GuiDetectDevice::GuiDetectDevice(Window* window, bool firstRun, const std::function<void()>& doneCallback) : GuiComponent(window), mFirstRun(firstRun),
|
GuiDetectDevice::GuiDetectDevice(Window* window, bool firstRun, const std::function<void()>& doneCallback) : GuiComponent(window), mFirstRun(firstRun),
|
||||||
mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 5))
|
mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 5))
|
||||||
{
|
{
|
||||||
|
@ -100,15 +104,26 @@ void GuiDetectDevice::update(int deltaTime)
|
||||||
{
|
{
|
||||||
if(mHoldingConfig)
|
if(mHoldingConfig)
|
||||||
{
|
{
|
||||||
mHoldTime -= deltaTime;
|
// If ES starts and if a known device is connected after startup skip controller configuration
|
||||||
const float t = (float)mHoldTime / HOLD_TIME;
|
if(mFirstRun && fs::exists(InputManager::getConfigPath()) && InputManager::getInstance()->getNumConfiguredDevices() > 0)
|
||||||
unsigned int c = (unsigned char)(t * 255);
|
|
||||||
mDeviceHeld->setColor((c << 24) | (c << 16) | (c << 8) | 0xFF);
|
|
||||||
if(mHoldTime <= 0)
|
|
||||||
{
|
{
|
||||||
// picked one!
|
InputManager::getInstance()->doOnFinish(); // execute possible onFinish commands
|
||||||
mWindow->pushGui(new GuiInputConfig(mWindow, mHoldingConfig, true, mDoneCallback));
|
if(mDoneCallback)
|
||||||
delete this;
|
mDoneCallback();
|
||||||
|
delete this; // delete GUI element
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mHoldTime -= deltaTime;
|
||||||
|
const float t = (float)mHoldTime / HOLD_TIME;
|
||||||
|
unsigned int c = (unsigned char)(t * 255);
|
||||||
|
mDeviceHeld->setColor((c << 24) | (c << 16) | (c << 8) | 0xFF);
|
||||||
|
if(mHoldTime <= 0)
|
||||||
|
{
|
||||||
|
// picked one!
|
||||||
|
mWindow->pushGui(new GuiInputConfig(mWindow, mHoldingConfig, true, mDoneCallback));
|
||||||
|
delete this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue