Louvre v1.2.0-2
Louvre (1.2.0-2)
New Protocols
- Viewporter (refer to
LSurface::srcRect()
). - Fractional Scale (refer to
LOutput::setScale()
). - Wlr Gamma Control (refer to
LOutput::setGammaRequest()
). - Tearing Control (refer to
LSurface::preferVSync()
andLOutput::enableVSync()
).
New Features
LOutput
now supports fractional scales with optional oversampling to reduce aliasing artifacts when necessary.- Added VSync disabling capability in
LOutput
with optional refresh rate limits. LOutput
now supports custom gamma correction curves throughLOutput::setGamma()
and the newLGammaTable
class.LPainter
has new methods for rendering texture regions with higher precision and applied transforms.LTextureView
now supports custom source rects and transforms, seeLTextureView::setSrcRect()
andLTextureView::setTransform()
.- Introduced
LBitset
class to reduce memory usage for storing binary conditions. - Introduced
isKeySymbolPressed()
toLKeyboard
, allowing querying the state of key symbols instead of raw key codes.
Minor API Changes
- Replaced most of the non-order-dependent lists with vectors to minimize cache misses.
LOutput
setBufferDamage()
now takesLRegion *
as an argument instead ofLRegion &
.- Updated all virtual constructor parameters in
LCompositor
toconst void *
. - Removed the
create()
method inLAnimation
andLTimer
, replaced with class constructors for stack allocation. - Replaced LView's
paintRect()
event withpaintEvent()
.
Graphic Backend
- The graphic backend modules API has been refactored with a cleaner and more efficient API (this does not affect Louvre public API).
Input Backend
- The Caps Lock key LED is now automatically toggled based on the state of the keyboard modifiers.
Bug Fixes
- Resolved a bug causing the compositor to respond to multiple frame callbacks when a client sent multiple frames before waiting for a reply, thanks to @yurikhan for identifying and reporting it.
Examples
- The
louvre-views
example now uses a single texture atlas for UI elements instead of individual images. - Transitioned most heap-allocated objects to stack allocation.
- Workspace switching and fullscreen transition animations have undergone optimization, resulting in a smoother visual experience.
- Added new shortcuts for changing the output transform, scale, mode, and toggling VSync.
Building
- Updated C++ standard to version 20.
- SRM dependency now requires version 0.5.2 or later.
Documentation
- Rewrote most of the tutorial for clearer explanations and code.
- Created a new repo containing the code of the final result after completing the tutorial.
- Expanded the tutorial with new chapters on gamma correction, fractional scaling, and VSync.
- Remove white spaces from code, thanks to @zlice.
-- Eduardo Hopperdietzel [email protected] Tue, 13 Feb 2024 13:28:39 -0300