diff --git a/.agent/rules/build-project.md b/.agent/rules/build-project.md index bd72d3517..6d610c486 100644 --- a/.agent/rules/build-project.md +++ b/.agent/rules/build-project.md @@ -1,4 +1,23 @@ -# Build Instructions (Debug Mode) +# Build Instructions + +The build configurations in `.ecode/project_build.json` are the source of truth for the +developer's local build workflows. Check that file before selecting a generator, backend, or +build flags. In particular, do not use an AddressSanitizer build to evaluate runtime performance. + +## Release Performance Builds (Linux) + +For performance investigations, use the `eepp-linux-ninja` configuration from +`.ecode/project_build.json`. At the time of writing, its commands are: + +`premake5 --disable-static-build --with-debug-symbols --with-backend=SDL3 ninja` + +`ninja -C make/linux release` + +This produces an optimized release build with debug symbols and without AddressSanitizer. Run the +release executable (for example, `bin/eepp-ui-html`) when measuring performance. Recheck +`.ecode/project_build.json` before use because the local configuration may change. + +## Debug and Unit-Test Builds All build commands must be executed from the **root project directory**. Follow these steps to build the project: diff --git a/include/eepp/ui/uiscenenode.hpp b/include/eepp/ui/uiscenenode.hpp index 91ac563fe..b0091d5a3 100644 --- a/include/eepp/ui/uiscenenode.hpp +++ b/include/eepp/ui/uiscenenode.hpp @@ -958,6 +958,8 @@ class EE_API UISceneNode : public SceneNode { bool mIsLoading{ false }; bool mUpdatingLayouts{ false }; bool mStyleDuringLoad{ false }; + Uint32 mPendingHTTPStyleSheetLoads{ 0 }; + bool mHTTPStyleSheetChanged{ false }; UIThemeManager* mUIThemeManager{ nullptr }; UIIconThemeManager* mUIIconThemeManager{ nullptr }; std::vector mFontFaces; @@ -1183,6 +1185,11 @@ class EE_API UISceneNode : public SceneNode { */ void loadCSS( URI uri, std::optional