Reduce allocations in CSS parsing and style updates

- reuse reentrant property-resolution storage during variable substitution
  - skip redundant resolution-slot copies using structural source comparison
  - retain variable cache capacity and resolve variables in place
  - avoid copying canonical names for definition-backed properties
  - propagate resolved inherited properties by reference through widget trees
  - parse animation and transition declarations with allocation-light string views
  - share declaration tokenization between animation and transition parsers
  - avoid empty animation-map and action-query allocations
  - parse border radii without temporary split vectors
  - accept string views when converting UI lengths
  - format color hex values directly without string streams
  - use inline storage for small polygon point collections
  - preserve animation parsing semantics and fix longhand direction handling
  - save eeiv configuration when closing through keyboard shortcuts
  - extend animation, variable-resolution, property-name, and color tests
This commit is contained in:
Martín Lucas Golini
2026-08-09 19:22:00 -03:00
parent 482833d95f
commit 5f419ca58d
20 changed files with 646 additions and 332 deletions
+6 -3
View File
@@ -281,8 +281,10 @@ bool App::init() {
mConsole->setMaxLogLines( 1024000 );
mConsole->setFontSize( mConfig.ConsoleFontSize );
mConsole->on( Event::KeyDown, [this]( const Event* event ) {
if ( event->asKeyEvent()->getKeyCode() == KEY_ESCAPE )
if ( event->asKeyEvent()->getKeyCode() == KEY_ESCAPE ) {
saveConfig();
mUIApplication->getWindow()->close();
}
} );
mConsoleCommands = std::make_unique<ConsoleCommands>( this, mConsole );
registerConsoleCommands();
@@ -357,9 +359,10 @@ void App::registerKeyBindings() {
}
if ( mConsole->isActive() )
return;
if ( key == KEY_ESCAPE || key == KEY_Q )
if ( key == KEY_ESCAPE || key == KEY_Q ) {
saveConfig();
getWindow()->close();
else if ( key == KEY_TAB && keyEvent->getMod() & KEYMOD_ALT )
} else if ( key == KEY_TAB && keyEvent->getMod() & KEYMOD_ALT )
getWindow()->minimize();
else if ( key == KEY_F || ( key == KEY_RETURN && keyEvent->getMod() & KEYMOD_ALT ) )
getWindow()->toggleFullscreen();