summaryrefslogtreecommitdiff
path: root/Source/Android/jni/AndroidCommon/IDCache.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2026-06-28 12:38:55 -0400
committerGitHub <noreply@github.com>2026-06-28 12:38:55 -0400
commite2ab15aa23fd05f5f90f71552ee33857bad5775e (patch)
tree5aa1d2177c73ffc9ce3b812ca991080c814ebc99 /Source/Android/jni/AndroidCommon/IDCache.cpp
parentbe33a68335e9ede4d8a54b9449ddda5329531d5a (diff)
parent1d1c9696aeee312e003d200fde105ab9da6a409c (diff)
Merge pull request #14647 from tom-pratt/netplay
Android netplay
Diffstat (limited to 'Source/Android/jni/AndroidCommon/IDCache.cpp')
-rw-r--r--Source/Android/jni/AndroidCommon/IDCache.cpp201
1 files changed, 201 insertions, 0 deletions
diff --git a/Source/Android/jni/AndroidCommon/IDCache.cpp b/Source/Android/jni/AndroidCommon/IDCache.cpp
index 18b486023a..58cec02308 100644
--- a/Source/Android/jni/AndroidCommon/IDCache.cpp
+++ b/Source/Android/jni/AndroidCommon/IDCache.cpp
@@ -25,6 +25,32 @@ static jmethodID s_game_file_constructor;
static jclass s_game_file_cache_class;
static jfieldID s_game_file_cache_pointer;
+static jclass s_netplay_session_class;
+static jfieldID s_net_play_ui_callbacks_pointer;
+static jfieldID s_net_play_client_pointer;
+static jfieldID s_net_play_server_pointer;
+static jmethodID s_netplay_on_boot_game;
+static jmethodID s_netplay_on_stop_game;
+static jmethodID s_netplay_on_connection_lost;
+static jmethodID s_netplay_on_connection_error;
+static jmethodID s_netplay_on_game_changed;
+static jmethodID s_netplay_on_host_input_authority_changed;
+static jmethodID s_netplay_on_pad_buffer_changed;
+static jmethodID s_netplay_on_chat_message_received;
+static jmethodID s_netplay_update;
+static jmethodID s_netplay_on_show_chunked_progress_dialog;
+static jmethodID s_netplay_on_set_chunked_progress;
+static jmethodID s_netplay_on_hide_chunked_progress_dialog;
+static jmethodID s_netplay_on_desync;
+static jmethodID s_netplay_on_show_game_digest_dialog;
+static jmethodID s_netplay_on_set_game_digest_progress;
+static jmethodID s_netplay_on_set_game_digest_result;
+static jmethodID s_netplay_on_abort_game_digest;
+static jmethodID s_netplay_on_traversal_state_changed;
+
+static jclass s_netplay_player_class;
+static jmethodID s_netplay_player_constructor;
+
static jclass s_analytics_class;
static jmethodID s_get_analytics_value;
@@ -220,6 +246,126 @@ jfieldID GetGameFileCachePointer()
return s_game_file_cache_pointer;
}
+jclass GetNetplaySessionClass()
+{
+ return s_netplay_session_class;
+}
+
+jfieldID GetNetPlayUICallbacksPointer()
+{
+ return s_net_play_ui_callbacks_pointer;
+}
+
+jfieldID GetNetPlayClientPointer()
+{
+ return s_net_play_client_pointer;
+}
+
+jfieldID GetNetPlayServerPointer()
+{
+ return s_net_play_server_pointer;
+}
+
+jmethodID GetNetplayOnBootGame()
+{
+ return s_netplay_on_boot_game;
+}
+
+jmethodID GetNetplayOnStopGame()
+{
+ return s_netplay_on_stop_game;
+}
+
+jmethodID GetNetplayOnConnectionLost()
+{
+ return s_netplay_on_connection_lost;
+}
+
+jmethodID GetNetplayOnConnectionError()
+{
+ return s_netplay_on_connection_error;
+}
+
+jmethodID GetNetplayOnGameChanged()
+{
+ return s_netplay_on_game_changed;
+}
+
+jmethodID GetNetplayOnHostInputAuthorityChanged()
+{
+ return s_netplay_on_host_input_authority_changed;
+}
+
+jmethodID GetNetplayOnPadBufferChanged()
+{
+ return s_netplay_on_pad_buffer_changed;
+}
+
+jmethodID GetNetplayOnChatMessageReceived()
+{
+ return s_netplay_on_chat_message_received;
+}
+
+jmethodID GetNetplayUpdate()
+{
+ return s_netplay_update;
+}
+
+jmethodID GetNetplayOnShowChunkedProgressDialog()
+{
+ return s_netplay_on_show_chunked_progress_dialog;
+}
+
+jmethodID GetNetplayOnSetChunkedProgress()
+{
+ return s_netplay_on_set_chunked_progress;
+}
+
+jmethodID GetNetplayOnHideChunkedProgressDialog()
+{
+ return s_netplay_on_hide_chunked_progress_dialog;
+}
+
+jmethodID GetNetplayOnDesync()
+{
+ return s_netplay_on_desync;
+}
+
+jmethodID GetNetplayOnShowGameDigestDialog()
+{
+ return s_netplay_on_show_game_digest_dialog;
+}
+
+jmethodID GetNetplayOnSetGameDigestProgress()
+{
+ return s_netplay_on_set_game_digest_progress;
+}
+
+jmethodID GetNetplayOnSetGameDigestResult()
+{
+ return s_netplay_on_set_game_digest_result;
+}
+
+jmethodID GetNetplayOnAbortGameDigest()
+{
+ return s_netplay_on_abort_game_digest;
+}
+
+jmethodID GetNetplayOnTraversalStateChanged()
+{
+ return s_netplay_on_traversal_state_changed;
+}
+
+jclass GetNetplayPlayerClass()
+{
+ return s_netplay_player_class;
+}
+
+jmethodID GetNetplayPlayerConstructor()
+{
+ return s_netplay_player_constructor;
+}
+
jclass GetPairClass()
{
return s_pair_class;
@@ -615,6 +761,59 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
s_game_file_cache_pointer = env->GetFieldID(game_file_cache_class, "pointer", "J");
env->DeleteLocalRef(game_file_cache_class);
+ const jclass netplay_session_class =
+ env->FindClass("org/dolphinemu/dolphinemu/features/netplay/NetplaySession");
+ s_netplay_session_class = reinterpret_cast<jclass>(env->NewGlobalRef(netplay_session_class));
+ s_net_play_ui_callbacks_pointer =
+ env->GetFieldID(netplay_session_class, "netPlayUICallbacksPointer", "J");
+ s_net_play_client_pointer = env->GetFieldID(netplay_session_class, "netPlayClientPointer", "J");
+ s_net_play_server_pointer = env->GetFieldID(netplay_session_class, "netPlayServerPointer", "J");
+ s_netplay_on_boot_game =
+ env->GetMethodID(netplay_session_class, "onBootGame", "(Ljava/lang/String;J)V");
+ s_netplay_on_stop_game = env->GetMethodID(netplay_session_class, "onStopGame", "()V");
+ s_netplay_on_connection_lost = env->GetMethodID(netplay_session_class, "onConnectionLost", "()V");
+ s_netplay_on_connection_error =
+ env->GetMethodID(netplay_session_class, "onConnectionError", "(Ljava/lang/String;)V");
+ s_netplay_on_game_changed =
+ env->GetMethodID(netplay_session_class, "onGameChanged", "(Ljava/lang/String;)V");
+ s_netplay_on_host_input_authority_changed =
+ env->GetMethodID(netplay_session_class, "onHostInputAuthorityChanged", "(Z)V");
+ s_netplay_on_pad_buffer_changed =
+ env->GetMethodID(netplay_session_class, "onPadBufferChanged", "(I)V");
+ s_netplay_on_chat_message_received =
+ env->GetMethodID(netplay_session_class, "onChatMessageReceived", "(Ljava/lang/String;)V");
+ s_netplay_update =
+ env->GetMethodID(netplay_session_class, "onUpdate",
+ "([Lorg/dolphinemu/dolphinemu/features/netplay/model/Player;)V");
+ s_netplay_on_show_chunked_progress_dialog = env->GetMethodID(
+ netplay_session_class, "onShowChunkedProgressDialog", "(Ljava/lang/String;J[I)V");
+ s_netplay_on_set_chunked_progress =
+ env->GetMethodID(netplay_session_class, "onSetChunkedProgress", "(IJ)V");
+ s_netplay_on_hide_chunked_progress_dialog =
+ env->GetMethodID(netplay_session_class, "onHideChunkedProgressDialog", "()V");
+ s_netplay_on_desync =
+ env->GetMethodID(netplay_session_class, "onDesync", "(ILjava/lang/String;)V");
+ s_netplay_on_show_game_digest_dialog =
+ env->GetMethodID(netplay_session_class, "onShowGameDigestDialog", "(Ljava/lang/String;)V");
+ s_netplay_on_set_game_digest_progress =
+ env->GetMethodID(netplay_session_class, "onSetGameDigestProgress", "(II)V");
+ s_netplay_on_set_game_digest_result =
+ env->GetMethodID(netplay_session_class, "onSetGameDigestResult", "(ILjava/lang/String;)V");
+ s_netplay_on_abort_game_digest =
+ env->GetMethodID(netplay_session_class, "onAbortGameDigest", "()V");
+ s_netplay_on_traversal_state_changed =
+ env->GetMethodID(netplay_session_class, "onTraversalStateChanged",
+ "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
+ env->DeleteLocalRef(netplay_session_class);
+
+ const jclass netplay_player_class =
+ env->FindClass("org/dolphinemu/dolphinemu/features/netplay/model/Player");
+ s_netplay_player_class = reinterpret_cast<jclass>(env->NewGlobalRef(netplay_player_class));
+ s_netplay_player_constructor =
+ env->GetMethodID(netplay_player_class, "<init>",
+ "(ILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;)V");
+ env->DeleteLocalRef(netplay_player_class);
+
const jclass analytics_class = env->FindClass("org/dolphinemu/dolphinemu/utils/Analytics");
s_analytics_class = reinterpret_cast<jclass>(env->NewGlobalRef(analytics_class));
s_get_analytics_value = env->GetStaticMethodID(s_analytics_class, "getValue",
@@ -828,6 +1027,8 @@ JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved)
env->DeleteGlobalRef(s_native_library_class);
env->DeleteGlobalRef(s_game_file_class);
env->DeleteGlobalRef(s_game_file_cache_class);
+ env->DeleteGlobalRef(s_netplay_session_class);
+ env->DeleteGlobalRef(s_netplay_player_class);
env->DeleteGlobalRef(s_analytics_class);
env->DeleteGlobalRef(s_pair_class);
env->DeleteGlobalRef(s_hash_map_class);