From 2d2d93443f029f0dfdda85f601afd55a05aac86d Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Thu, 9 Jul 2026 14:13:23 -0700 Subject: [PATCH] Play store crash investigations - Adding guards to investigate a potential source for https://github.com/godotengine/godot/issues/114800 - Adding logging statements to investigate https://github.com/godotengine/godot/issues/120638 (cherry picked from commit 60330f67eecab1d68a6f6f4a8deb119ec816f3b8) --- platform/android/display_server_android.cpp | 7 +++++++ .../java/lib/src/main/java/org/godotengine/godot/Godot.kt | 1 + .../src/main/java/org/godotengine/godot/vulkan/VkThread.kt | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/android/display_server_android.cpp b/platform/android/display_server_android.cpp index 00d1bd9b05..cd467155b8 100644 --- a/platform/android/display_server_android.cpp +++ b/platform/android/display_server_android.cpp @@ -230,6 +230,7 @@ void DisplayServerAndroid::emit_input_dialog_callback(String p_text) { } Error DisplayServerAndroid::file_dialog_show(const String &p_title, const String &p_current_directory, const String &p_filename, bool p_show_hidden, DisplayServerEnums::FileDialogMode p_mode, const Vector &p_filters, const Callable &p_callback, DisplayServerEnums::WindowID p_window_id) { + ERR_FAIL_COND_V(p_window_id != DisplayServerEnums::MAIN_WINDOW_ID, ERR_UNAVAILABLE); GodotJavaWrapper *godot_java = OS_Android::get_singleton()->get_godot_java(); ERR_FAIL_NULL_V(godot_java, FAILED); file_picker_callback = p_callback; @@ -429,18 +430,22 @@ bool DisplayServerAndroid::has_hardware_keyboard() const { } void DisplayServerAndroid::window_set_window_event_callback(const Callable &p_callable, DisplayServerEnums::WindowID p_window) { + ERR_FAIL_COND(p_window != DisplayServerEnums::MAIN_WINDOW_ID); window_event_callback = p_callable; } void DisplayServerAndroid::window_set_input_event_callback(const Callable &p_callable, DisplayServerEnums::WindowID p_window) { + ERR_FAIL_COND(p_window != DisplayServerEnums::MAIN_WINDOW_ID); input_event_callback = p_callable; } void DisplayServerAndroid::window_set_input_text_callback(const Callable &p_callable, DisplayServerEnums::WindowID p_window) { + ERR_FAIL_COND(p_window != DisplayServerEnums::MAIN_WINDOW_ID); input_text_callback = p_callable; } void DisplayServerAndroid::window_set_rect_changed_callback(const Callable &p_callable, DisplayServerEnums::WindowID p_window) { + ERR_FAIL_COND(p_window != DisplayServerEnums::MAIN_WINDOW_ID); rect_changed_callback = p_callable; } @@ -523,10 +528,12 @@ int64_t DisplayServerAndroid::window_get_native_handle(DisplayServerEnums::Handl } void DisplayServerAndroid::window_attach_instance_id(ObjectID p_instance, DisplayServerEnums::WindowID p_window) { + ERR_FAIL_COND(p_window != DisplayServerEnums::MAIN_WINDOW_ID); window_attached_instance_id = p_instance; } ObjectID DisplayServerAndroid::window_get_attached_instance_id(DisplayServerEnums::WindowID p_window) const { + ERR_FAIL_COND_V(p_window != DisplayServerEnums::MAIN_WINDOW_ID, ObjectID()); return window_attached_instance_id; } diff --git a/platform/android/java/lib/src/main/java/org/godotengine/godot/Godot.kt b/platform/android/java/lib/src/main/java/org/godotengine/godot/Godot.kt index a932a81cc5..8155e2d38b 100644 --- a/platform/android/java/lib/src/main/java/org/godotengine/godot/Godot.kt +++ b/platform/android/java/lib/src/main/java/org/godotengine/godot/Godot.kt @@ -1025,6 +1025,7 @@ class Godot private constructor(val context: Context) { fun onBackPressed() { for (plugin in pluginRegistry.allPlugins) { + Log.v(TAG, "Invoking onMainBackPressed for plugin ${plugin.pluginName}") plugin.onMainBackPressed() } runOnRenderThread { GodotLib.back() } diff --git a/platform/android/java/lib/src/main/java/org/godotengine/godot/vulkan/VkThread.kt b/platform/android/java/lib/src/main/java/org/godotengine/godot/vulkan/VkThread.kt index ccc1aa4417..15d6f5d74b 100644 --- a/platform/android/java/lib/src/main/java/org/godotengine/godot/vulkan/VkThread.kt +++ b/platform/android/java/lib/src/main/java/org/godotengine/godot/vulkan/VkThread.kt @@ -234,7 +234,7 @@ internal class VkThread(private val vkSurfaceView: VkSurfaceView, private val vk // Run queued event. if (event != null) { - event?.run() + event.run() continue }