Merge pull request #3916 from phire/totallyAwesomeBranch

analytics: Collect less data about controllers.
This commit is contained in:
Anthony Serna 2016-06-22 09:34:17 -05:00 committed by GitHub
commit 1746be3b2a
3 changed files with 18 additions and 5 deletions

View File

@ -247,12 +247,10 @@ void DolphinAnalytics::MakePerGameBuilder()
builder.AddData("movie", Movie::IsMovieActive()); builder.AddData("movie", Movie::IsMovieActive());
// Controller information // Controller information
// We grab enough to tell what percentage of our users are playing with keyboard/mouse, some kind of gamepad
// or the official gamecube adapter.
builder.AddData("gcadapter-detected", GCAdapter::IsDetected()); builder.AddData("gcadapter-detected", GCAdapter::IsDetected());
builder.AddData("has-controller", Pad::GetConfig()->IsControllerControlledByGamepadDevice(0) || GCAdapter::IsDetected());
// For privacy reasons, limit this to type of the first controller.
// The ControllersNeedToBeCreated() check is enough to ensure GetController(0) won't return nullptr or throw exceptions.
if (!Pad::GetConfig()->ControllersNeedToBeCreated())
builder.AddData("controller-type", Pad::GetConfig()->GetController(0)->default_device.name);
m_per_game_builder = builder; m_per_game_builder = builder;
} }

View File

@ -117,3 +117,17 @@ bool InputConfig::ControllersNeedToBeCreated() const
{ {
return m_controllers.empty(); return m_controllers.empty();
} }
bool InputConfig::IsControllerControlledByGamepadDevice(int index) const
{
if (static_cast<size_t>(index) >= m_controllers.size())
return false;
const auto& controller = m_controllers.at(index).get()->default_device;
// Filter out anything which obviously not a gamepad
return !((controller.source == "Keyboard") // OSX Keyboard/Mouse
|| (controller.source == "XInput2") // Linux and BSD Keyboard/Mouse
|| (controller.source == "Android" && controller.name == "Touchscreen") // Android Touchscreen
|| (controller.source == "DInput" && controller.name == "Keyboard Mouse")); // Windows Keyboard/Mouse
}

View File

@ -31,6 +31,7 @@ public:
ControllerEmu* GetController(int index); ControllerEmu* GetController(int index);
void ClearControllers(); void ClearControllers();
bool ControllersNeedToBeCreated() const; bool ControllersNeedToBeCreated() const;
bool IsControllerControlledByGamepadDevice(int index) const;
std::string GetGUIName() const { return m_gui_name; } std::string GetGUIName() const { return m_gui_name; }
std::string GetProfileName() const { return m_profile_name; } std::string GetProfileName() const { return m_profile_name; }