feat: updated godot version

This commit is contained in:
Sara Gerretsen 2026-04-04 19:38:56 +02:00
parent 0c508b0831
commit 42b028dbb5
4694 changed files with 236470 additions and 401376 deletions

View file

@ -49,12 +49,12 @@
#include "core/config/project_settings.h"
#include "core/input/input.h"
#include "core/os/main_loop.h"
#include "core/os/os.h"
#include "core/profiling/profiling.h"
#include "main/main.h"
#include "servers/camera/camera_server.h"
#include "servers/rendering/rendering_server.h"
#include "servers/camera/camera_server.h"
#ifndef XR_DISABLED
#include "servers/xr/xr_server.h"
#endif // XR_DISABLED
@ -139,21 +139,6 @@ static void _terminate(JNIEnv *env, bool p_restart = false) {
}
}
static String rendering_source_to_string(OS::RenderingSource p_source) {
switch (p_source) {
case OS::RENDERING_SOURCE_DEFAULT:
return "Default";
case OS::RENDERING_SOURCE_PROJECT_SETTING:
return "ProjectSettings";
case OS::RENDERING_SOURCE_COMMANDLINE:
return "Commandline";
case OS::RENDERING_SOURCE_FALLBACK:
return "Fallback";
default:
return "Unknown";
}
}
extern "C" {
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setVirtualKeyboardHeight(JNIEnv *env, jclass clazz, jint p_height) {
@ -273,7 +258,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_back(JNIEnv *env, jcl
}
if (DisplayServerAndroid *dsa = Object::cast_to<DisplayServerAndroid>(DisplayServer::get_singleton())) {
dsa->send_window_event(DisplayServerEnums::WINDOW_EVENT_GO_BACK_REQUEST);
dsa->send_window_event(DisplayServer::WINDOW_EVENT_GO_BACK_REQUEST);
}
}
@ -502,46 +487,13 @@ JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv *
return env->NewStringUTF(setting_value.utf8().get_data());
}
JNIEXPORT jobjectArray JNICALL Java_org_godotengine_godot_GodotLib_getRendererInfo(JNIEnv *env, jclass clazz, jboolean p_vulkan_requirements_met) {
String rendering_driver_original = RenderingServer::get_singleton()->get_current_rendering_driver_name();
String rendering_driver_chosen = rendering_driver_original;
JNIEXPORT jobjectArray JNICALL Java_org_godotengine_godot_GodotLib_getRendererInfo(JNIEnv *env, jclass clazz) {
String rendering_driver = RenderingServer::get_singleton()->get_current_rendering_driver_name();
String rendering_method = RenderingServer::get_singleton()->get_current_rendering_method();
#ifdef VULKAN_ENABLED
if (rendering_driver_original == "vulkan" && !DisplayServerAndroid::check_vulkan_global_context(p_vulkan_requirements_met)) {
// The Android display server only gets created after this step, so a static check must be used to check for Vulkan
// availability instead. If the check fails, it'll fall back to OpenGL3 accordingly if the relevant project setting
// is enabled. The Vulkan context created by this check will be reused by the DisplayServer afterwards.
rendering_driver_chosen = RenderingServer::get_singleton()->get_current_rendering_driver_name();
rendering_method = RenderingServer::get_singleton()->get_current_rendering_method();
}
#ifndef XR_DISABLED
// When running in XR mode, vulkan initialization must be done by the XR module, so we ensure that the vulkan
// global context is reset.
// Note: This is temporary workaround to address https://github.com/godotengine/godot/issues/115924
// A proper fix involves updating the Android init flow so that DisplayServerAndroid can update the Android surface
// type (vulkan or opengl) after it's initialized.
bool xr_enabled = false;
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
xr_enabled = GLOBAL_GET_CACHED(bool, "xr/shaders/enabled");
} else {
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
}
if (xr_enabled) {
DisplayServerAndroid::free_vulkan_global_context();
}
#endif // XR_DISABLED
#endif
String rendering_driver_source = rendering_source_to_string(OS::get_singleton()->get_current_rendering_driver_name_source());
String rendering_method_source = rendering_source_to_string(OS::get_singleton()->get_current_rendering_method_source());
jobjectArray result = env->NewObjectArray(5, jni_find_class(env, "java/lang/String"), nullptr);
env->SetObjectArrayElement(result, 0, env->NewStringUTF(rendering_driver_chosen.utf8().get_data()));
env->SetObjectArrayElement(result, 1, env->NewStringUTF(rendering_driver_original.utf8().get_data()));
env->SetObjectArrayElement(result, 2, env->NewStringUTF(rendering_method.utf8().get_data()));
env->SetObjectArrayElement(result, 3, env->NewStringUTF(rendering_driver_source.utf8().get_data()));
env->SetObjectArrayElement(result, 4, env->NewStringUTF(rendering_method_source.utf8().get_data()));
jobjectArray result = env->NewObjectArray(2, jni_find_class(env, "java/lang/String"), nullptr);
env->SetObjectArrayElement(result, 0, env->NewStringUTF(rendering_driver.utf8().get_data()));
env->SetObjectArrayElement(result, 1, env->NewStringUTF(rendering_method.utf8().get_data()));
return result;
}
@ -678,7 +630,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onRendererPaused(JNIE
}
}
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onOrientationChange(JNIEnv *env, jclass clazz, jint p_orientation) {
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onScreenRotationChange(JNIEnv *env, jclass clazz, jint p_orientation) {
if (step.get() <= STEP_SETUP) {
return;
}
@ -687,11 +639,6 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onOrientationChange(J
if (camera_server) {
camera_server->handle_display_rotation_change(p_orientation);
}
DisplayServer *display_server = DisplayServer::get_singleton();
if (display_server) {
display_server->emit_signal("orientation_changed", p_orientation);
}
}
JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_shouldDispatchInputToRenderThread(JNIEnv *env, jclass clazz) {
@ -730,18 +677,4 @@ JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_hasFeature(JNIEnv
}
return false;
}
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onPictureInPictureModeChanged(JNIEnv *env, jclass clazz, jboolean p_is_in_picture_in_picture_mode) {
if (step.get() <= STEP_SETUP) {
return;
}
if (os_android->get_main_loop()) {
if (p_is_in_picture_in_picture_mode) {
os_android->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_PIP_MODE_ENTERED);
} else {
os_android->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_PIP_MODE_EXITED);
}
}
}
}