diff options
53 files changed, 148 insertions, 88 deletions
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml index afc73a462f..ea97ef023d 100644 --- a/.github/workflows/android_builds.yml +++ b/.github/workflows/android_builds.yml @@ -18,7 +18,7 @@ jobs: name: Template (target=template_release) steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Java 11 uses: actions/setup-java@v3 diff --git a/.github/workflows/godot_cpp_test.yml b/.github/workflows/godot_cpp_test.yml index 5384197f37..dccc853550 100644 --- a/.github/workflows/godot_cpp_test.yml +++ b/.github/workflows/godot_cpp_test.yml @@ -18,14 +18,14 @@ jobs: runs-on: "ubuntu-20.04" name: "Build and test Godot CPP" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup python and scons uses: ./.github/actions/godot-deps # Checkout godot-cpp - name: Checkout godot-cpp - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: godotengine/godot-cpp ref: ${{ env.GODOT_CPP_BRANCH }} diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/ios_builds.yml index 63ecabd957..6557120d87 100644 --- a/.github/workflows/ios_builds.yml +++ b/.github/workflows/ios_builds.yml @@ -18,7 +18,7 @@ jobs: name: Template (target=template_release) steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Godot build cache uses: ./.github/actions/godot-cache diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml index 01f2404866..fc0db1fbd6 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/linux_builds.yml @@ -85,7 +85,7 @@ jobs: artifact: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Need newer mesa for lavapipe to work properly. - name: Linux dependencies for tests @@ -111,7 +111,7 @@ jobs: uses: ./.github/actions/godot-deps - name: Set up .NET Sdk - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v3 if: ${{ matrix.build-mono }} with: dotnet-version: '6.0.x' diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml index ae6f452bc2..1e39aceeb8 100644 --- a/.github/workflows/macos_builds.yml +++ b/.github/workflows/macos_builds.yml @@ -33,7 +33,7 @@ jobs: sconsflags: debug_symbols=no steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Godot build cache uses: ./.github/actions/godot-cache diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml index c096c63f9b..4b7f721a23 100644 --- a/.github/workflows/static_checks.yml +++ b/.github/workflows/static_checks.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 2 diff --git a/.github/workflows/web_builds.yml b/.github/workflows/web_builds.yml index 2ae238caa6..47baf3d065 100644 --- a/.github/workflows/web_builds.yml +++ b/.github/workflows/web_builds.yml @@ -20,7 +20,7 @@ jobs: name: Template (target=template_release) steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Emscripten latest uses: mymindstorm/setup-emsdk@v12 diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml index ab62dca5cb..14f2992848 100644 --- a/.github/workflows/windows_builds.yml +++ b/.github/workflows/windows_builds.yml @@ -38,7 +38,7 @@ jobs: sconsflags: debug_symbols=no steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Godot build cache uses: ./.github/actions/godot-cache diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index bc8bcb1134..b7b57a5f1f 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -157,11 +157,11 @@ void editor_register_fonts(Ref<Theme> p_theme) { Ref<FontFile> georgian_font = load_internal_font(_font_NotoSansGeorgian_Regular, _font_NotoSansGeorgian_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> hebrew_font = load_internal_font(_font_NotoSansHebrew_Regular, _font_NotoSansHebrew_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> malayalam_font = load_internal_font(_font_NotoSansMalayalamUI_Regular, _font_NotoSansMalayalamUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); - Ref<FontFile> oriya_font = load_internal_font(_font_NotoSansOriyaUI_Regular, _font_NotoSansOriyaUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); + Ref<FontFile> oriya_font = load_internal_font(_font_NotoSansOriya_Regular, _font_NotoSansOriya_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> sinhala_font = load_internal_font(_font_NotoSansSinhalaUI_Regular, _font_NotoSansSinhalaUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> tamil_font = load_internal_font(_font_NotoSansTamilUI_Regular, _font_NotoSansTamilUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> telugu_font = load_internal_font(_font_NotoSansTeluguUI_Regular, _font_NotoSansTeluguUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); - Ref<FontFile> thai_font = load_internal_font(_font_NotoSansThaiUI_Regular, _font_NotoSansThaiUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); + Ref<FontFile> thai_font = load_internal_font(_font_NotoSansThai_Regular, _font_NotoSansThai_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> fallback_font = load_internal_font(_font_DroidSansFallback, _font_DroidSansFallback_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); Ref<FontFile> japanese_font = load_internal_font(_font_DroidSansJapanese, _font_DroidSansJapanese_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks); default_font->set_fallbacks(fallbacks); @@ -177,11 +177,11 @@ void editor_register_fonts(Ref<Theme> p_theme) { Ref<FontFile> georgian_font_bold = load_internal_font(_font_NotoSansGeorgian_Bold, _font_NotoSansGeorgian_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontFile> hebrew_font_bold = load_internal_font(_font_NotoSansHebrew_Bold, _font_NotoSansHebrew_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontFile> malayalam_font_bold = load_internal_font(_font_NotoSansMalayalamUI_Bold, _font_NotoSansMalayalamUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); - Ref<FontFile> oriya_font_bold = load_internal_font(_font_NotoSansOriyaUI_Bold, _font_NotoSansOriyaUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); + Ref<FontFile> oriya_font_bold = load_internal_font(_font_NotoSansOriya_Bold, _font_NotoSansOriya_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontFile> sinhala_font_bold = load_internal_font(_font_NotoSansSinhalaUI_Bold, _font_NotoSansSinhalaUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontFile> tamil_font_bold = load_internal_font(_font_NotoSansTamilUI_Bold, _font_NotoSansTamilUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontFile> telugu_font_bold = load_internal_font(_font_NotoSansTeluguUI_Bold, _font_NotoSansTeluguUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); - Ref<FontFile> thai_font_bold = load_internal_font(_font_NotoSansThaiUI_Bold, _font_NotoSansThaiUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); + Ref<FontFile> thai_font_bold = load_internal_font(_font_NotoSansThai_Bold, _font_NotoSansThai_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, false, &fallbacks_bold); Ref<FontVariation> fallback_font_bold = make_bold_font(fallback_font, embolden_strength, &fallbacks_bold); Ref<FontVariation> japanese_font_bold = make_bold_font(japanese_font, embolden_strength, &fallbacks_bold); diff --git a/main/main.cpp b/main/main.cpp index 0a9ebd4c61..7efd503f95 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -570,9 +570,15 @@ Error Main::test_setup() { ResourceLoader::load_path_remaps(); + // Initialize ThemeDB early so that scene types can register their theme items. + // Default theme will be initialized later, after modules and ScriptServer are ready. + initialize_theme_db(); + register_scene_types(); register_driver_types(); + register_scene_singletons(); + initialize_modules(MODULE_INITIALIZATION_LEVEL_SCENE); GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SCENE); @@ -588,9 +594,7 @@ Error Main::test_setup() { register_platform_apis(); // Theme needs modules to be initialized so that sub-resources can be loaded. - initialize_theme_db(); - theme_db->initialize_theme(); - register_scene_singletons(); + theme_db->initialize_theme_noproject(); initialize_navigation_server(); @@ -2561,9 +2565,15 @@ Error Main::setup2() { OS::get_singleton()->benchmark_begin_measure("scene"); + // Initialize ThemeDB early so that scene types can register their theme items. + // Default theme will be initialized later, after modules and ScriptServer are ready. + initialize_theme_db(); + register_scene_types(); register_driver_types(); + register_scene_singletons(); + initialize_modules(MODULE_INITIALIZATION_LEVEL_SCENE); GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SCENE); @@ -2581,11 +2591,6 @@ Error Main::setup2() { register_platform_apis(); - // Theme needs modules to be initialized so that sub-resources can be loaded. - // Default theme is initialized later, after ScriptServer is ready. - initialize_theme_db(); - register_scene_singletons(); - GLOBAL_DEF_BASIC(PropertyInfo(Variant::STRING, "display/mouse_cursor/custom_image", PROPERTY_HINT_FILE, "*.png,*.webp"), String()); GLOBAL_DEF_BASIC("display/mouse_cursor/custom_image_hotspot", Vector2()); GLOBAL_DEF_BASIC("display/mouse_cursor/tooltip_position_offset", Point2(10, 10)); diff --git a/modules/navigation/godot_navigation_server.h b/modules/navigation/godot_navigation_server.h index 40893bada6..c12605bc7a 100644 --- a/modules/navigation/godot_navigation_server.h +++ b/modules/navigation/godot_navigation_server.h @@ -56,7 +56,9 @@ void MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) class GodotNavigationServer; +#ifndef _3D_DISABLED class NavMeshGenerator3D; +#endif // _3D_DISABLED struct SetCommand { virtual ~SetCommand() {} @@ -80,7 +82,9 @@ class GodotNavigationServer : public NavigationServer3D { LocalVector<NavMap *> active_maps; LocalVector<uint32_t> active_maps_update_id; +#ifndef _3D_DISABLED NavMeshGenerator3D *navmesh_generator_3d = nullptr; +#endif // _3D_DISABLED // Performance Monitor int pm_region_count = 0; diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index cbe48db494..85e98eac76 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -2383,10 +2383,8 @@ void TextServerAdvanced::_font_set_variation_coordinates(const RID &p_font_rid, ERR_FAIL_COND(!fd); MutexLock lock(fd->mutex); - if (fd->variation_coordinates != p_variation_coordinates) { - _font_clear_cache(fd); - fd->variation_coordinates = p_variation_coordinates; - } + _font_clear_cache(fd); + fd->variation_coordinates = p_variation_coordinates; } Dictionary TextServerAdvanced::_font_get_variation_coordinates(const RID &p_font_rid) const { diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index d0587bf6c0..5d4de7a0d6 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -1376,10 +1376,8 @@ void TextServerFallback::_font_set_variation_coordinates(const RID &p_font_rid, ERR_FAIL_COND(!fd); MutexLock lock(fd->mutex); - if (fd->variation_coordinates != p_variation_coordinates) { - _font_clear_cache(fd); - fd->variation_coordinates = p_variation_coordinates; - } + _font_clear_cache(fd); + fd->variation_coordinates = p_variation_coordinates; } Dictionary TextServerFallback::_font_get_variation_coordinates(const RID &p_font_rid) const { diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index 860e48a361..c8e3741383 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -5579,8 +5579,8 @@ Variant Animation::subtract_variant(const Variant &a, const Variant &b) { Variant Animation::blend_variant(const Variant &a, const Variant &b, float c) { if (a.get_type() != b.get_type()) { if (a.is_num() && b.is_num()) { - real_t va = a; - real_t vb = b; + double va = a; + double vb = b; return va + vb * c; } return a; @@ -5591,7 +5591,7 @@ Variant Animation::blend_variant(const Variant &a, const Variant &b, float c) { return Variant(); } case Variant::INT: { - return int((a.operator int64_t()) + (b.operator int64_t()) * c + 0.5); + return int64_t((a.operator int64_t()) + (b.operator int64_t()) * c + 0.5); } case Variant::FLOAT: { return (a.operator double()) + (b.operator double()) * c; @@ -5664,8 +5664,8 @@ Variant Animation::blend_variant(const Variant &a, const Variant &b, float c) { Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float c) { if (a.get_type() != b.get_type()) { if (a.is_num() && b.is_num()) { - real_t va = a; - real_t vb = b; + double va = a; + double vb = b; return va + (vb - va) * c; } return a; @@ -5677,11 +5677,11 @@ Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float } case Variant::INT: { const int64_t va = a.operator int64_t(); - return int(va + ((b.operator int64_t()) - va) * c); + return int64_t(va + ((b.operator int64_t()) - va) * c); } case Variant::FLOAT: { - const real_t va = a.operator real_t(); - return va + ((b.operator real_t()) - va) * c; + const double va = a.operator double(); + return va + ((b.operator double()) - va) * c; } case Variant::VECTOR2: { return (a.operator Vector2()).lerp(b.operator Vector2(), c); @@ -5783,7 +5783,7 @@ Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float case Variant::PACKED_INT32_ARRAY: { const Vector<int32_t> arr_a = a; const Vector<int32_t> arr_b = b; - int32_t sz = arr_a.size(); + int sz = arr_a.size(); if (sz == 0 || arr_b.size() != sz) { return a; } else { @@ -5795,7 +5795,7 @@ Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float const int32_t *br = arr_b.ptr(); Variant va; - for (int32_t i = 0; i < sz; i++) { + for (int i = 0; i < sz; i++) { va = interpolate_variant(ar[i], br[i], c); vw[i] = va; } @@ -5806,7 +5806,7 @@ Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float case Variant::PACKED_INT64_ARRAY: { const Vector<int64_t> arr_a = a; const Vector<int64_t> arr_b = b; - int64_t sz = arr_a.size(); + int sz = arr_a.size(); if (sz == 0 || arr_b.size() != sz) { return a; } else { @@ -5818,7 +5818,7 @@ Variant Animation::interpolate_variant(const Variant &a, const Variant &b, float const int64_t *br = arr_b.ptr(); Variant va; - for (int64_t i = 0; i < sz; i++) { + for (int i = 0; i < sz; i++) { va = interpolate_variant(ar[i], br[i], c); vw[i] = va; } diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index f5edc8d5e9..9d546c90c7 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -2833,10 +2833,8 @@ Ref<Font> FontVariation::_get_base_font_or_default() const { } void FontVariation::set_variation_opentype(const Dictionary &p_coords) { - if (variation.opentype != p_coords) { - variation.opentype = p_coords; - _invalidate_rids(); - } + variation.opentype = p_coords; + _invalidate_rids(); } Dictionary FontVariation::get_variation_opentype() const { @@ -2877,10 +2875,8 @@ int FontVariation::get_variation_face_index() const { } void FontVariation::set_opentype_features(const Dictionary &p_features) { - if (opentype_features != p_features) { - opentype_features = p_features; - _invalidate_rids(); - } + opentype_features = p_features; + _invalidate_rids(); } Dictionary FontVariation::get_opentype_features() const { diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp index 7120b21190..5b375905cc 100644 --- a/scene/resources/shader.cpp +++ b/scene/resources/shader.cpp @@ -239,8 +239,10 @@ Ref<Resource> ResourceFormatLoaderShader::load(const String &p_path, const Strin ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot load shader: " + p_path); String str; - error = str.parse_utf8((const char *)buffer.ptr(), buffer.size()); - ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader: " + p_path); + if (buffer.size() > 0) { + error = str.parse_utf8((const char *)buffer.ptr(), buffer.size()); + ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader: " + p_path); + } Ref<Shader> shader; shader.instantiate(); diff --git a/scene/resources/shader_include.cpp b/scene/resources/shader_include.cpp index 323be6e491..0a2a686b4e 100644 --- a/scene/resources/shader_include.cpp +++ b/scene/resources/shader_include.cpp @@ -93,8 +93,10 @@ Ref<Resource> ResourceFormatLoaderShaderInclude::load(const String &p_path, cons ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot load shader include: " + p_path); String str; - error = str.parse_utf8((const char *)buffer.ptr(), buffer.size()); - ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader include: " + p_path); + if (buffer.size() > 0) { + error = str.parse_utf8((const char *)buffer.ptr(), buffer.size()); + ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader include: " + p_path); + } Ref<ShaderInclude> shader_inc; shader_inc.instantiate(); diff --git a/scene/theme/theme_db.cpp b/scene/theme/theme_db.cpp index 39a4f078b5..ae2a629c1d 100644 --- a/scene/theme/theme_db.cpp +++ b/scene/theme/theme_db.cpp @@ -91,6 +91,18 @@ void ThemeDB::initialize_theme_noproject() { } } +void ThemeDB::finalize_theme() { + if (!RenderingServer::get_singleton()) { + WARN_PRINT("Finalizing theme when there is no RenderingServer is an error; check the order of operations."); + } + + default_theme.unref(); + + fallback_font.unref(); + fallback_icon.unref(); + fallback_stylebox.unref(); +} + // Universal fallback Theme resources. void ThemeDB::set_default_theme(const Ref<Theme> &p_default) { diff --git a/scene/theme/theme_db.h b/scene/theme/theme_db.h index f65899f5ea..f7866cb3ea 100644 --- a/scene/theme/theme_db.h +++ b/scene/theme/theme_db.h @@ -61,6 +61,7 @@ protected: public: void initialize_theme(); void initialize_theme_noproject(); + void finalize_theme(); // Universal Theme resources diff --git a/tests/scene/test_viewport.h b/tests/scene/test_viewport.h index dd4786977e..0c53668c6d 100644 --- a/tests/scene/test_viewport.h +++ b/tests/scene/test_viewport.h @@ -43,8 +43,8 @@ namespace TestViewport { -class NotificationControl : public Control { - GDCLASS(NotificationControl, Control); +class NotificationControlViewport : public Control { + GDCLASS(NotificationControlViewport, Control); protected: void _notification(int p_what) { @@ -63,11 +63,11 @@ public: bool mouse_over = false; }; -// `NotificationControl`-derived class that additionally +// `NotificationControlViewport`-derived class that additionally // - allows start Dragging // - stores mouse information of last event -class DragStart : public NotificationControl { - GDCLASS(DragStart, NotificationControl); +class DragStart : public NotificationControlViewport { + GDCLASS(DragStart, NotificationControlViewport); public: MouseButton last_mouse_button; @@ -93,9 +93,9 @@ public: } }; -// `NotificationControl`-derived class that acts as a Drag and Drop target. -class DragTarget : public NotificationControl { - GDCLASS(DragTarget, NotificationControl); +// `NotificationControlViewport`-derived class that acts as a Drag and Drop target. +class DragTarget : public NotificationControlViewport { + GDCLASS(DragTarget, NotificationControlViewport); public: Variant drag_data; diff --git a/tests/scene/test_window.h b/tests/scene/test_window.h index e0c55101de..592cccfd7e 100644 --- a/tests/scene/test_window.h +++ b/tests/scene/test_window.h @@ -38,8 +38,8 @@ namespace TestWindow { -class NotificationControl : public Control { - GDCLASS(NotificationControl, Control); +class NotificationControlWindow : public Control { + GDCLASS(NotificationControlWindow, Control); protected: void _notification(int p_what) { @@ -69,7 +69,7 @@ TEST_CASE("[SceneTree][Window]") { w->set_content_scale_size(Size2i(200, 200)); w->set_content_scale_mode(Window::CONTENT_SCALE_MODE_CANVAS_ITEMS); w->set_content_scale_aspect(Window::CONTENT_SCALE_ASPECT_KEEP); - NotificationControl *c = memnew(NotificationControl); + NotificationControlWindow *c = memnew(NotificationControlWindow); w->add_child(c); c->set_size(Size2i(100, 100)); c->set_position(Size2i(-50, -50)); diff --git a/tests/servers/test_text_server.h b/tests/servers/test_text_server.h index eef5b850ca..0f23929e1e 100644 --- a/tests/servers/test_text_server.h +++ b/tests/servers/test_text_server.h @@ -70,7 +70,7 @@ TEST_SUITE("[TextServer]") { ts->font_set_data_ptr(font1, _font_NotoSans_Regular, _font_NotoSans_Regular_size); ts->font_set_allow_system_fallback(font1, false); RID font2 = ts->create_font(); - ts->font_set_data_ptr(font2, _font_NotoSansThaiUI_Regular, _font_NotoSansThaiUI_Regular_size); + ts->font_set_data_ptr(font2, _font_NotoSansThai_Regular, _font_NotoSansThai_Regular_size); ts->font_set_allow_system_fallback(font2, false); Array font; @@ -177,7 +177,7 @@ TEST_SUITE("[TextServer]") { ts->font_set_data_ptr(font1, _font_NotoSans_Regular, _font_NotoSans_Regular_size); ts->font_set_allow_system_fallback(font1, false); RID font2 = ts->create_font(); - ts->font_set_data_ptr(font2, _font_NotoSansThaiUI_Regular, _font_NotoSansThaiUI_Regular_size); + ts->font_set_data_ptr(font2, _font_NotoSansThai_Regular, _font_NotoSansThai_Regular_size); ts->font_set_allow_system_fallback(font2, false); RID font3 = ts->create_font(); ts->font_set_data_ptr(font3, _font_NotoNaskhArabicUI_Regular, _font_NotoNaskhArabicUI_Regular_size); @@ -511,7 +511,7 @@ TEST_SUITE("[TextServer]") { RID font1 = ts->create_font(); ts->font_set_data_ptr(font1, _font_NotoSans_Regular, _font_NotoSans_Regular_size); RID font2 = ts->create_font(); - ts->font_set_data_ptr(font2, _font_NotoSansThaiUI_Regular, _font_NotoSansThaiUI_Regular_size); + ts->font_set_data_ptr(font2, _font_NotoSansThai_Regular, _font_NotoSansThai_Regular_size); Array font; font.push_back(font1); diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 6cc7aad48e..a4306db6f4 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -212,7 +212,6 @@ struct GodotTestCaseListener : public doctest::IReporter { PhysicsServer2D *physics_server_2d = nullptr; NavigationServer3D *navigation_server_3d = nullptr; NavigationServer2D *navigation_server_2d = nullptr; - ThemeDB *theme_db = nullptr; void test_case_start(const doctest::TestCaseData &p_in) override { reinitialize(); @@ -238,6 +237,10 @@ struct GodotTestCaseListener : public doctest::IReporter { RenderingServerDefault::get_singleton()->init(); RenderingServerDefault::get_singleton()->set_render_loop_enabled(false); + // ThemeDB requires RenderingServer to initialize the default theme. + // So we have to do this for each test case. + ThemeDB::get_singleton()->initialize_theme_noproject(); + physics_server_3d = PhysicsServer3DManager::get_singleton()->new_default_server(); physics_server_3d->init(); @@ -252,9 +255,6 @@ struct GodotTestCaseListener : public doctest::IReporter { memnew(InputMap); InputMap::get_singleton()->load_default(); - theme_db = memnew(ThemeDB); - theme_db->initialize_theme_noproject(); - memnew(SceneTree); SceneTree::get_singleton()->initialize(); if (!DisplayServer::get_singleton()->has_feature(DisplayServer::Feature::FEATURE_SUBWINDOWS)) { @@ -294,11 +294,6 @@ struct GodotTestCaseListener : public doctest::IReporter { memdelete(SceneTree::get_singleton()); } - if (theme_db) { - memdelete(theme_db); - theme_db = nullptr; - } - if (navigation_server_3d) { memdelete(navigation_server_3d); navigation_server_3d = nullptr; @@ -326,6 +321,10 @@ struct GodotTestCaseListener : public doctest::IReporter { } if (RenderingServer::get_singleton()) { + // ThemeDB requires RenderingServer to finalize the default theme. + // So we have to do this for each test case. + ThemeDB::get_singleton()->finalize_theme(); + RenderingServer::get_singleton()->sync(); RenderingServer::get_singleton()->global_shader_parameters_clear(); RenderingServer::get_singleton()->finish(); diff --git a/thirdparty/README.md b/thirdparty/README.md index 100f4edb71..e8cef36f9a 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -154,25 +154,68 @@ Files extracted from upstream source: ## fonts -- `NotoSans*.woff2`, `NotoNaskhArabicUI_*.woff2`: - * Upstream: https://github.com/googlefonts/noto-fonts - * Version: v2017-10-24-phase3-second-cleanup - * License: OFL-1.1 - * Comment: Use UI font variant if available, because it has tight vertical metrics and - good for UI. -- `JetBrainsMono_Regular.woff2`: - * Upstream: https://github.com/JetBrains/JetBrainsMono - * Version: 2.242 - * License: OFL-1.1 - `DroidSans*.woff2`: * Upstream: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/ * Version: ? (pre-2014 commit when DroidSansJapanese.ttf was obsoleted) * License: Apache 2.0 +- `JetBrainsMono_Regular.woff2`: + * Upstream: https://github.com/JetBrains/JetBrainsMono + * Version: 2.304 (cd5227bd1f61dff3bbd6c814ceaf7ffd95e947d9, 2023) + * License: OFL-1.1 +- `NotoNaskhArabicUI*.woff2`: + * Upstream: https://github.com/notofonts/arabic + * Version: 2.014 (133ccaebf922ca080a7eef22998611ac3c242df9, 2022) + * License: OFL-1.1 +- `NotoSans*.woff2`: + * Upstream: https://github.com/notofonts/latin-greek-cyrillic + * Version: 2.012 (9ea0c8d37bff0c0067b03777f40aa04f2bf78f99, 2023) + * License: OFL-1.1 +- `NotoSansBengali*.woff2`: + * Upstream: https://github.com/notofonts/bengali + * Version: 2.003 (020a5701f6fc6a363d5eccbae45e37714c0ad686, 2022) + * License: OFL-1.1 +- `NotoSansDevanagari*.woff2`: + * Upstream: https://github.com/notofonts/devanagari + * Version: 2.004 (f8f27e49da0ec9e5e38ecf3628671f05b24dd955, 2023) + * License: OFL-1.1 +- `NotoSansGeorgian*.woff2`: + * Upstream: https://github.com/notofonts/georgian + * Version: 2.002 (243ec9aa1d4ec58cc42120d30faac1a102fbfeb9, 2022) + * License: OFL-1.1 +- `NotoSansHebrew*.woff2`: + * Upstream: https://github.com/notofonts/hebrew + * Version: 2.003 (caa7ab0614fb5b37cc003d9bf3d7d3e765331110, 2022) + * License: OFL-1.1 +- `NotoSansMalayalam*.woff2`: + * Upstream: https://github.com/notofonts/malayalam + * Version: 2.104 (0fd65e553a6af3dc1c09ed39dfe8933e01c17b32, 2023) + * License: OFL-1.1 +- `NotoSansOriya*.woff2`: + * Upstream: https://github.com/notofonts/oriya + * Version: 2.005 (9377f242b247df12d0bf4cecd93b9c4b18036fbd, 2023) + * License: OFL-1.1 +- `NotoSansSinhala*.woff2`: + * Upstream: https://github.com/notofonts/sinhala + * Version: 2.006 (66e5a2ed9797e575222d6e7c5b3710c7bf68be79, 2022) + * License: OFL-1.1 +- `NotoSansTamil*.woff2`: + * Upstream: https://github.com/notofonts/tamil + * Version: 2.004 (f34a08d1ae3fa810581f63410296d971bdcd62dc, 2023) + * License: OFL-1.1 +- `NotoSansTelugu*.woff2`: + * Upstream: https://github.com/notofonts/telugu + * Version: 2.004 (68a6a8170cba5b2e9b45029ef36994961e8f614c, 2023) + * License: OFL-1.1 +- `NotoSansThai*.woff2`: + * Upstream: https://github.com/notofonts/thai + * Version: 2.001 (09af528011390f35abf15cf86068dae208f512c4, 2022) + * License: OFL-1.1 - `OpenSans_SemiBold.woff2`: * Upstream: https://fonts.google.com/specimen/Open+Sans * Version: 1.10 (downloaded from Google Fonts in February 2021) * License: Apache 2.0 -- All fonts are converted from the `.ttf` sources using `https://github.com/google/woff2` tool. +- All fonts are converted from the unhinted `.ttf` sources using `https://github.com/google/woff2` tool. +- Comment: Use UI font variant if available, because it has tight vertical metrics and good for UI. ## freetype diff --git a/thirdparty/fonts/JetBrainsMono_Regular.woff2 b/thirdparty/fonts/JetBrainsMono_Regular.woff2 Binary files differindex 490104645b..dc698ffb83 100644 --- a/thirdparty/fonts/JetBrainsMono_Regular.woff2 +++ b/thirdparty/fonts/JetBrainsMono_Regular.woff2 diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2 b/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2 Binary files differindex 72358d6eb1..e9a834ac69 100644 --- a/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2 +++ b/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2 b/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2 Binary files differindex 1195d4174e..b0c0aaf766 100644 --- a/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2 +++ b/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2 b/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2 Binary files differindex 03adf85fdc..c0087a2453 100644 --- a/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2 b/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2 Binary files differindex a6a3ffa3a7..219792295a 100644 --- a/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2 b/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2 Binary files differindex 6c835712cb..d3d34ff8e1 100644 --- a/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2 b/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2 Binary files differindex 486896e6e9..333562f449 100644 --- a/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansGeorgian_Bold.woff2 b/thirdparty/fonts/NotoSansGeorgian_Bold.woff2 Binary files differindex 104afa150c..c5e25ffe22 100644 --- a/thirdparty/fonts/NotoSansGeorgian_Bold.woff2 +++ b/thirdparty/fonts/NotoSansGeorgian_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansGeorgian_Regular.woff2 b/thirdparty/fonts/NotoSansGeorgian_Regular.woff2 Binary files differindex 0a7b9e878b..64ff0e84d8 100644 --- a/thirdparty/fonts/NotoSansGeorgian_Regular.woff2 +++ b/thirdparty/fonts/NotoSansGeorgian_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansHebrew_Bold.woff2 b/thirdparty/fonts/NotoSansHebrew_Bold.woff2 Binary files differindex 96c5ae1349..01768b6416 100644 --- a/thirdparty/fonts/NotoSansHebrew_Bold.woff2 +++ b/thirdparty/fonts/NotoSansHebrew_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansHebrew_Regular.woff2 b/thirdparty/fonts/NotoSansHebrew_Regular.woff2 Binary files differindex 17eadedc6f..980b7d3bf8 100644 --- a/thirdparty/fonts/NotoSansHebrew_Regular.woff2 +++ b/thirdparty/fonts/NotoSansHebrew_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2 b/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2 Binary files differindex 5f6bacb0c3..8757bf3584 100644 --- a/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2 b/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2 Binary files differindex c54a82a874..cd266fafd3 100644 --- a/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2 b/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2 Binary files differdeleted file mode 100644 index b7e34302e2..0000000000 --- a/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2 +++ /dev/null diff --git a/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2 b/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2 Binary files differdeleted file mode 100644 index e64090cd77..0000000000 --- a/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2 +++ /dev/null diff --git a/thirdparty/fonts/NotoSansOriya_Bold.woff2 b/thirdparty/fonts/NotoSansOriya_Bold.woff2 Binary files differnew file mode 100644 index 0000000000..333abfaae0 --- /dev/null +++ b/thirdparty/fonts/NotoSansOriya_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansOriya_Regular.woff2 b/thirdparty/fonts/NotoSansOriya_Regular.woff2 Binary files differnew file mode 100644 index 0000000000..c9b7c4a74e --- /dev/null +++ b/thirdparty/fonts/NotoSansOriya_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2 b/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2 Binary files differindex 01dbd1bc8f..7facb291bd 100644 --- a/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2 b/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2 Binary files differindex 504c9d0809..8059db385f 100644 --- a/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansTamilUI_Bold.woff2 b/thirdparty/fonts/NotoSansTamilUI_Bold.woff2 Binary files differindex 96967b0cce..ed428dedbd 100644 --- a/thirdparty/fonts/NotoSansTamilUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansTamilUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansTamilUI_Regular.woff2 b/thirdparty/fonts/NotoSansTamilUI_Regular.woff2 Binary files differindex e9b2bee582..d32dc96ae6 100644 --- a/thirdparty/fonts/NotoSansTamilUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansTamilUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2 b/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2 Binary files differindex 2885bf991d..4de7b9f28d 100644 --- a/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2 +++ b/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2 b/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2 Binary files differindex ac5e66d8f6..0d9fe71d3a 100644 --- a/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2 +++ b/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2 diff --git a/thirdparty/fonts/NotoSansThaiUI_Bold.woff2 b/thirdparty/fonts/NotoSansThaiUI_Bold.woff2 Binary files differdeleted file mode 100644 index 202995c066..0000000000 --- a/thirdparty/fonts/NotoSansThaiUI_Bold.woff2 +++ /dev/null diff --git a/thirdparty/fonts/NotoSansThaiUI_Regular.woff2 b/thirdparty/fonts/NotoSansThaiUI_Regular.woff2 Binary files differdeleted file mode 100644 index 2fb284f21f..0000000000 --- a/thirdparty/fonts/NotoSansThaiUI_Regular.woff2 +++ /dev/null diff --git a/thirdparty/fonts/NotoSansThai_Bold.woff2 b/thirdparty/fonts/NotoSansThai_Bold.woff2 Binary files differnew file mode 100644 index 0000000000..68dc6c1392 --- /dev/null +++ b/thirdparty/fonts/NotoSansThai_Bold.woff2 diff --git a/thirdparty/fonts/NotoSansThai_Regular.woff2 b/thirdparty/fonts/NotoSansThai_Regular.woff2 Binary files differnew file mode 100644 index 0000000000..ae29cbdb10 --- /dev/null +++ b/thirdparty/fonts/NotoSansThai_Regular.woff2 diff --git a/thirdparty/fonts/NotoSans_Bold.woff2 b/thirdparty/fonts/NotoSans_Bold.woff2 Binary files differindex 36a5b89999..09a3297a6a 100644 --- a/thirdparty/fonts/NotoSans_Bold.woff2 +++ b/thirdparty/fonts/NotoSans_Bold.woff2 diff --git a/thirdparty/fonts/NotoSans_Regular.woff2 b/thirdparty/fonts/NotoSans_Regular.woff2 Binary files differindex d449eed8d7..59c252ede1 100644 --- a/thirdparty/fonts/NotoSans_Regular.woff2 +++ b/thirdparty/fonts/NotoSans_Regular.woff2 |