summaryrefslogtreecommitdiffstats
path: root/src/input_common/drivers/android.h
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2024-02-24 06:38:13 +0100
committerGitHub <noreply@github.com>2024-02-24 06:38:13 +0100
commitd1e0039bc87a28e42b05b324d0f15dc063a898b1 (patch)
treec17bd7729a3e6ec78a9e261c38a7dd013a4f3832 /src/input_common/drivers/android.h
parentMerge pull request #13146 from wheremyfoodat/patch-1 (diff)
parentandroid: Play vibrations asynchronously (diff)
downloadyuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar.gz
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar.bz2
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar.lz
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar.xz
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.tar.zst
yuzu-d1e0039bc87a28e42b05b324d0f15dc063a898b1.zip
Diffstat (limited to 'src/input_common/drivers/android.h')
-rw-r--r--src/input_common/drivers/android.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/input_common/drivers/android.h b/src/input_common/drivers/android.h
index 8a386c1b1..03e2b2c98 100644
--- a/src/input_common/drivers/android.h
+++ b/src/input_common/drivers/android.h
@@ -4,6 +4,7 @@
#pragma once
#include <set>
+#include <common/threadsafe_queue.h>
#include <jni.h>
#include "input_common/input_engine.h"
@@ -16,6 +17,8 @@ class Android final : public InputEngine {
public:
explicit Android(std::string input_engine_);
+ ~Android() override;
+
/**
* Registers controller number to accept new inputs.
* @param j_input_device YuzuInputDevice object from the Android frontend to register.
@@ -89,6 +92,9 @@ private:
/// Returns the correct identifier corresponding to the player index
PadIdentifier GetIdentifier(const std::string& guid, size_t port) const;
+ /// Takes all vibrations from the queue and sends the command to the controller
+ void SendVibrations(JNIEnv* env, std::stop_token token);
+
static constexpr s32 AXIS_X = 0;
static constexpr s32 AXIS_Y = 1;
static constexpr s32 AXIS_Z = 11;
@@ -133,6 +139,10 @@ private:
redmagic_vid, backbone_labs_vid, xbox_vid};
const std::vector<std::string> flipped_xy_vids{sony_vid, razer_vid, redmagic_vid,
backbone_labs_vid, xbox_vid};
+
+ /// Queue of vibration request to controllers
+ Common::SPSCQueue<VibrationRequest> vibration_queue;
+ std::jthread vibration_thread;
};
} // namespace InputCommon