Browse Source

Make Android Joystick init behave in the same was as for SDL

QGC4.4
Matej Frančeškin 6 years ago
parent
commit
a7381c4e08
  1. 6
      src/Joystick/JoystickAndroid.cc
  2. 6
      src/Joystick/JoystickAndroid.h
  3. 7
      src/Joystick/JoystickManager.cc

6
src/Joystick/JoystickAndroid.cc

@ -76,8 +76,6 @@ QMap<QString, Joystick*> JoystickAndroid::discover(MultiVehicleManager* _multiVe @@ -76,8 +76,6 @@ QMap<QString, Joystick*> JoystickAndroid::discover(MultiVehicleManager* _multiVe
bool joystickFound = false;
static QMap<QString, Joystick*> ret;
_initStatic(); //it's enough to run it once, should be in a static constructor
QMutexLocker lock(&m_mutex);
QAndroidJniEnvironment env;
@ -194,7 +192,7 @@ uint8_t JoystickAndroid::_getHat(int hat,int i) { @@ -194,7 +192,7 @@ uint8_t JoystickAndroid::_getHat(int hat,int i) {
}
//helper method
void JoystickAndroid::_initStatic() {
bool JoystickAndroid::init() {
//this gets list of all possible buttons - this is needed to check how many buttons our gamepad supports
//instead of the whole logic below we could have just a simple array of hardcoded int values as these 'should' not change
@ -229,5 +227,7 @@ void JoystickAndroid::_initStatic() { @@ -229,5 +227,7 @@ void JoystickAndroid::_initStatic() {
ACTION_DOWN = QAndroidJniObject::getStaticField<jint>("android/view/KeyEvent", "ACTION_DOWN");
ACTION_UP = QAndroidJniObject::getStaticField<jint>("android/view/KeyEvent", "ACTION_UP");
return true;
}

6
src/Joystick/JoystickAndroid.h

@ -16,9 +16,12 @@ class JoystickAndroid : public Joystick, public QtAndroidPrivate::GenericMotionE @@ -16,9 +16,12 @@ class JoystickAndroid : public Joystick, public QtAndroidPrivate::GenericMotionE
{
public:
JoystickAndroid(const QString& name, int axisCount, int buttonCount, int id, MultiVehicleManager* multiVehicleManager);
~JoystickAndroid();
static QMap<QString, Joystick*> discover(MultiVehicleManager* _multiVehicleManager);
static bool init();
static QMap<QString, Joystick*> discover(MultiVehicleManager* _multiVehicleManager);
private:
bool handleKeyEvent(jobject event);
@ -37,7 +40,6 @@ private: @@ -37,7 +40,6 @@ private:
bool *btnValue;
int *axisValue;
static void _initStatic();
static int * _androidBtnList; //list of all possible android buttons
static int _androidBtnListCount;

7
src/Joystick/JoystickManager.cc

@ -60,8 +60,11 @@ void JoystickManager::init() { @@ -60,8 +60,11 @@ void JoystickManager::init() {
_joystickCheckTimer.start(250);
}
#elif defined(__android__)
_setActiveJoystickFromSettings();
//TODO: Investigate Android events for Joystick hot plugging & run _joystickCheckTimer if possible
if (JoystickAndroid::init()) {
_setActiveJoystickFromSettings();
connect(&_joystickCheckTimer, &QTimer::timeout, this, &JoystickManager::_updateAvailableJoysticks);
_joystickCheckTimer.start(250);
}
#endif
}

Loading…
Cancel
Save