mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-06-16 22:01:14 +00:00
Implement rumble support
This commit is contained in:
@@ -10,4 +10,6 @@ public interface NvConnectionListener {
|
|||||||
|
|
||||||
void displayMessage(String message);
|
void displayMessage(String message);
|
||||||
void displayTransientMessage(String message);
|
void displayTransientMessage(String message);
|
||||||
|
|
||||||
|
void rumble(short controllerNumber, short lowFreqMotor, short highFreqMotor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,6 +156,12 @@ public class MoonBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void bridgeClRumble(short controllerNumber, short lowFreqMotor, short highFreqMotor) {
|
||||||
|
if (connectionListener != null) {
|
||||||
|
connectionListener.rumble(controllerNumber, lowFreqMotor, highFreqMotor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void setupBridge(VideoDecoderRenderer videoRenderer, AudioRenderer audioRenderer, NvConnectionListener connectionListener) {
|
public static void setupBridge(VideoDecoderRenderer videoRenderer, AudioRenderer audioRenderer, NvConnectionListener connectionListener) {
|
||||||
MoonBridge.videoRenderer = videoRenderer;
|
MoonBridge.videoRenderer = videoRenderer;
|
||||||
MoonBridge.audioRenderer = audioRenderer;
|
MoonBridge.audioRenderer = audioRenderer;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ static jmethodID BridgeClConnectionStartedMethod;
|
|||||||
static jmethodID BridgeClConnectionTerminatedMethod;
|
static jmethodID BridgeClConnectionTerminatedMethod;
|
||||||
static jmethodID BridgeClDisplayMessageMethod;
|
static jmethodID BridgeClDisplayMessageMethod;
|
||||||
static jmethodID BridgeClDisplayTransientMessageMethod;
|
static jmethodID BridgeClDisplayTransientMessageMethod;
|
||||||
|
static jmethodID BridgeClRumbleMethod;
|
||||||
static jbyteArray DecodedFrameBuffer;
|
static jbyteArray DecodedFrameBuffer;
|
||||||
static jbyteArray DecodedAudioBuffer;
|
static jbyteArray DecodedAudioBuffer;
|
||||||
|
|
||||||
@@ -94,6 +95,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_init(JNIEnv *env, jclass clazz) {
|
|||||||
BridgeClConnectionTerminatedMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClConnectionTerminated", "(J)V");
|
BridgeClConnectionTerminatedMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClConnectionTerminated", "(J)V");
|
||||||
BridgeClDisplayMessageMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClDisplayMessage", "(Ljava/lang/String;)V");
|
BridgeClDisplayMessageMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClDisplayMessage", "(Ljava/lang/String;)V");
|
||||||
BridgeClDisplayTransientMessageMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClDisplayTransientMessage", "(Ljava/lang/String;)V");
|
BridgeClDisplayTransientMessageMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClDisplayTransientMessage", "(Ljava/lang/String;)V");
|
||||||
|
BridgeClRumbleMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClRumble", "(SSS)V");
|
||||||
}
|
}
|
||||||
|
|
||||||
int BridgeDrSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) {
|
int BridgeDrSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) {
|
||||||
@@ -363,6 +365,16 @@ void BridgeClDisplayTransientMessage(const char* message) {
|
|||||||
(*env)->CallStaticVoidMethod(env, GlobalBridgeClass, BridgeClDisplayTransientMessageMethod, (*env)->NewStringUTF(env, message));
|
(*env)->CallStaticVoidMethod(env, GlobalBridgeClass, BridgeClDisplayTransientMessageMethod, (*env)->NewStringUTF(env, message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BridgeClRumble(short controllerNumber, short lowFreqMotor, short highFreqMotor) {
|
||||||
|
JNIEnv* env = GetThreadEnv();
|
||||||
|
|
||||||
|
if ((*env)->ExceptionCheck(env)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*env)->CallStaticVoidMethod(env, GlobalBridgeClass, BridgeClRumbleMethod, controllerNumber, lowFreqMotor, highFreqMotor);
|
||||||
|
}
|
||||||
|
|
||||||
void BridgeClLogMessage(const char* format, ...) {
|
void BridgeClLogMessage(const char* format, ...) {
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
va_start(va, format);
|
||||||
@@ -395,6 +407,7 @@ static CONNECTION_LISTENER_CALLBACKS BridgeConnListenerCallbacks = {
|
|||||||
.displayMessage = BridgeClDisplayMessage,
|
.displayMessage = BridgeClDisplayMessage,
|
||||||
.displayTransientMessage = BridgeClDisplayTransientMessage,
|
.displayTransientMessage = BridgeClDisplayTransientMessage,
|
||||||
.logMessage = BridgeClLogMessage,
|
.logMessage = BridgeClLogMessage,
|
||||||
|
.rumble = BridgeClRumble
|
||||||
};
|
};
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
|
|||||||
Submodule moonlight-common/src/main/jni/moonlight-core/moonlight-common-c updated: eb6bfe0205...83d7f675a7
Reference in New Issue
Block a user