Releases: CuarzoSoftware/Louvre
Releases Β· CuarzoSoftware/Louvre
Louvre v1.1.0-1
Louvre (1.1.0-1)
License
- License updated from GPLv3 to MIT.
Dependencies
- Substituted the FreeImage dependency with STB Image.
Building
- Substituted
LConfig.h
configuration header withLCompositor
methods for querying default assets paths and backends. - Incorporated soversion in
meson.build
.
Minor API Changes
- The
LCompositor loadGraphicBackend()
andloadInputBackend()
methods now acceptconst std::string &
as an argument instead ofconst char *
. - The
LToplevelRole
appId()
andtitle()
methods now returnconst std::string &
instead ofconst char *
. - The use of
LCompositor::nextSerial()
is now deprecated, andLTime::nextSerial()
should be used instead. LView::paintRect()
now takes anLView::PaintRectParams
struct reference as an argument, eliminating the need to pass all parameters by value.- The
LView::setBlendFunc()
method now follows theglBlendFuncSeparate()
parameters, enabling a more precise blend function configuration.
Additions
- Introduce
LToplevelRole
pendingStates()
andpendingSize()
methods for querying the lastconfigure()
parameters. - Introduce the
LVersion
struct and theLCompositor::version()
method to facilitate querying the current Louvre version in use. - Introduce the
LTime
nextSerial()
andus()
functions for obtaining incremental integer numbers and timestamps with microsecond granularity. - Introduce the
LLauncher
auxiliary class, designed for creating a daemon and safely launching applications. - Introduce the
PaintRectParams
struct toLView
for utilization inLView::paintRect()
calls from anLScene
, aiming to reduce the memory transfer overhead associated with each call. - Introduce the
enableAutoBlendFunc()
option toLView
to enable Louvre to automatically select the OpenGL blend function based on whether the target framebuffer is an output framebuffer or a custom framebuffer. This addition aims to address and resolve alpha-related issues while rendering. - Add
pressedButtons()
andisButtonPressed()
methods toLPointer
, providing the ability to query the state of pointer buttons at any given time. - The
LSurface
class now features theviews()
method, providing access to allLSurfaceViews
created for the surface.
Internal Changes
- Error and fatal messages from
LLog
are now directed tostderr
, thanks to @brianhsu. LToplevelRole
configure events are now stored and dispatched at the conclusion of a main loop iteration.- Toplevels are now automatically configured with the pending states and size if the developer does not explicitly configure them during set or unset fullscreen or maximize requests.
- Within the Libinput backend, the Libinput context is no longer recreated with each session switch. Previously, this recreation was necessary when forks were created while the compositor was running, as failure to do so would lead to compositor crashes.
- Pageflip output events are no longer designated as critical sections, enabling them to run concurrently with the main thread loop. This enhancement improves the output refresh rate.
Bug Fixes
- Addressed a bug in
LPainter::clearScreen()
where it failed to clear the entire screen when the current framebuffer transform differed fromLFramebuffer::Transform::Normal
. - Addressed a bug where the data source cancelled event wasn't sent to the client when start drag & drop sessions were denied.
- Resolved a bug where
LSolidColorViews
were not marked as damaged when their color was changed.
Benchmark
- Include details about the environment in which the benchmark was conducted.
- Enhance benchmark scripts to more safely retrieve the compositors' process IDs.
-- Eduardo Hopperdietzel [email protected] Mon, 18 Dec 2023 19:06:14 -0300
Louvre v1.0.1-1
Louvre (1.0.1-1)
Additions
- Introduce new environment variables enabling backend selection, thanks to @2xsaiko for the idea.
Building
- Incorporate pkg-config into
meson.build
to enhance dependency resolution, special thanks to @jengelh. - Integrate meson.build options to streamline the configuration of assets and backends.
Documentation
- Rectify a package error in Fedora build instructions, thanks to @jwijenbergh.
- Append notes to
LCompositor::loadGraphicBackend()
andLCompositor::loadInputBackend()
methods. - Enhance benchmark documentation with operational details and transition build system from qmake to Meson.
-- Eduardo Hopperdietzel [email protected] Mon, 20 Nov 2023 00:56:50 -0300
Louvre v1.0.0-1
Louvre (1.0.0-1)
Added
- Multi-GPU support is now available.
- Introduction of
LObject
as the base class facilitates sharing future functionality among classes. - Pluggable scene and views system introduced for efficient rendering and handling of input events.
- New
LAnimation
class for creating time-based animations. - New
LTimer
class for time-based triggered callbacks. - New
LResource
wrapper class forwl_resource
structs; each protocol resource or global now has its ownLResource
subclass. - Developers can add or modify default compositor globals by overriding the
LCompositor::createGlobalsRequest()
virtual method. - New example,
louvre-views
, a MacOS X lookalike compositor that uses the scene and views system. LOutput
framebuffers can now be used as textures.LOutput
now supports framebuffer transforms.- New
LRenderBuffer
class for rendering into framebuffers and using them as textures. - Added support for XDG Decoration, Presentation Time, and Linux DMA-Buf protocols.
- Libseat can now be enabled or disabled using the LOUVRE_ENABLE_LIBSEAT environment variable.
- Single, double, or triple buffering can now be configured using SRM library environment variables.
Changed
LCompositor::start()
method is now non-blocking; developers can control the rate of compositor events processing using the pollableLCompositor::fd()
andLCompositor::processLoop()
methods.- New directory structure for protocol interfaces located in
src/lib/protocols
. - Clients can now bind multiple times to the
wl_seat
global, resolving the Firefox issue where it could only receive pointer events. - Clients can now create a
wl_data_device
for eachwl_seat
. - Clients can now bind multiple times to the
wl_subcompositor
global. ping()
andpong()
methods moved from XDG Shell toLClient
class.- The DRM graphic backend now uses the SRM library.
Removed
- X11 graphic and input backends are no longer supported.
LOutputManager
class has been eliminated, and its functionality has been integrated into theLSeat
class.
-- Eduardo Hopperdietzel [email protected] Sun, 12 Nov 2023 23:22:58 -0300
Release v0.1.0-alpha
First testing release.