The animation frame timer was re-armed with setTime(), setOneShot() and then
setEnabled(true). In the systemd event loop backend setEnabled(true) means
SD_EVENT_ON, a repeating source, and setOneShot() had just set SD_EVENT_ONESHOT.
The re-armed timer was therefore repeating at a time that had already passed,
and the event loop fired it again on every iteration: the main thread of Fcitx5
sat at 100% CPU and typing froze. The first animation was not affected, the
timer is only re-armed from the second one on, which is why it showed up as a
sudden freeze after typing for a while.
setOneShot() alone is correct. tests/timer_rearm.cpp arms a timer twice the way
the window does: with the old calls it fires 198725 times in 200 ms, with the
fix exactly twice.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Record words picked with "Forget candidate" in a block list and drop them
from the candidate list before each refresh, so words from read only
dictionaries stay gone.
- Add scripts/enable-autostart.sh for starting with m3ui at login.
- Make the Chinese README the default, keep the English one as README.en.md.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fork of the classicui addon (Fcitx5 5.1.23) with a Material 3 look, spring
based animations and a right click action menu for candidates.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>