Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package aquamarine for openSUSE:Factory checked in at 2024-11-09 20:59:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aquamarine (Old) and /work/SRC/openSUSE:Factory/.aquamarine.new.2017 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aquamarine" Sat Nov 9 20:59:09 2024 rev:3 rq:1222996 version:0.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/aquamarine/aquamarine.changes 2024-09-17 18:20:39.257043465 +0200 +++ /work/SRC/openSUSE:Factory/.aquamarine.new.2017/aquamarine.changes 2024-11-09 21:00:09.206869035 +0100 @@ -1,0 +2,16 @@ +Sat Nov 9 16:40:43 UTC 2024 - Florian "spirit" <[email protected]> + +- Update to aquamarine-0.4.4: + * drm: guard cursorFB buffer in restoreAfterVT + +- Changes from aquamarine-0.4.3: + * fix drm lease crash + +- Changes from aquamarine-0.4.2: + * A minor update with some fixes and fresh new CTM support. + * Fixes: + - session: only dispatch udev in dispatchPendingEventsAsync if on + linux + - wayland: log compositor name on startup + +------------------------------------------------------------------- Old: ---- aquamarine-0.4.1.tar.xz New: ---- aquamarine-0.4.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aquamarine.spec ++++++ --- /var/tmp/diff_new_pack.2gNdIl/_old 2024-11-09 21:00:11.270954895 +0100 +++ /var/tmp/diff_new_pack.2gNdIl/_new 2024-11-09 21:00:11.270954895 +0100 @@ -22,7 +22,7 @@ provides basic abstractions for an application to render on a Wayland session (in a window) or a native DRM session.} Name: aquamarine -Version: 0.4.1 +Version: 0.4.4 Release: 0 Summary: Rendering backend library License: BSD-3-Clause ++++++ aquamarine-0.4.1.tar.xz -> aquamarine-0.4.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/CMakeLists.txt new/aquamarine-0.4.4/CMakeLists.txt --- old/aquamarine-0.4.1/CMakeLists.txt 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/CMakeLists.txt 2024-11-09 15:40:00.000000000 +0100 @@ -29,7 +29,7 @@ libinput>=1.26.0 wayland-client wayland-protocols - hyprutils>=0.1.5 + hyprutils>=0.2.3 pixman-1 libdrm gbm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/VERSION new/aquamarine-0.4.4/VERSION --- old/aquamarine-0.4.1/VERSION 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/VERSION 2024-11-09 15:40:00.000000000 +0100 @@ -1 +1 @@ -0.4.1 +0.4.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/flake.lock new/aquamarine-0.4.4/flake.lock --- old/aquamarine-0.4.1/flake.lock 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/flake.lock 2024-11-09 15:40:00.000000000 +0100 @@ -10,11 +10,11 @@ ] }, "locked": { - "lastModified": 1724966483, - "narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", + "lastModified": 1727300645, + "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", + "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", "type": "github" }, "original": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/include/aquamarine/backend/DRM.hpp new/aquamarine-0.4.4/include/aquamarine/backend/DRM.hpp --- old/aquamarine-0.4.1/include/aquamarine/backend/DRM.hpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/include/aquamarine/backend/DRM.hpp 2024-11-09 15:40:00.000000000 +0100 @@ -7,6 +7,7 @@ #include <hyprutils/memory/WeakPtr.hpp> #include <wayland-client.h> #include <xf86drmMode.h> +#include <optional> namespace Aquamarine { class CDRMBackend; @@ -162,6 +163,7 @@ bool ownModeID = false; uint32_t modeID = 0; uint32_t gammaLut = 0; + uint32_t ctm = 0; } atomic; Hyprutils::Memory::CSharedPointer<SDRMPlane> primary; @@ -175,6 +177,7 @@ uint32_t vrr_enabled; uint32_t gamma_lut; uint32_t gamma_lut_size; + uint32_t ctm; // atomic-modesetting only @@ -242,13 +245,16 @@ uint32_t flags = 0; bool test = false; drmModeModeInfo modeInfo; + std::optional<Hyprutils::Math::Mat3x3> ctm; struct { uint32_t gammaLut = 0; uint32_t fbDamage = 0; uint32_t modeBlob = 0; + uint32_t ctmBlob = 0; bool blobbed = false; bool gammad = false; + bool ctmd = false; } atomic; void calculateMode(Hyprutils::Memory::CSharedPointer<SDRMConnector> connector); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/include/aquamarine/output/Output.hpp new/aquamarine-0.4.4/include/aquamarine/output/Output.hpp --- old/aquamarine-0.4.1/include/aquamarine/output/Output.hpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/include/aquamarine/output/Output.hpp 2024-11-09 15:40:00.000000000 +0100 @@ -5,6 +5,7 @@ #include <hyprutils/signal/Signal.hpp> #include <hyprutils/memory/SharedPtr.hpp> #include <hyprutils/math/Region.hpp> +#include <hyprutils/math/Mat3x3.hpp> #include <drm_fourcc.h> #include <xf86drmMode.h> #include "../allocator/Swapchain.hpp" @@ -51,6 +52,7 @@ AQ_OUTPUT_STATE_BUFFER = (1 << 7), AQ_OUTPUT_STATE_EXPLICIT_IN_FENCE = (1 << 8), AQ_OUTPUT_STATE_EXPLICIT_OUT_FENCE = (1 << 9), + AQ_OUTPUT_STATE_CTM = (1 << 10), }; struct SInternalState { @@ -67,6 +69,7 @@ uint32_t drmFormat = DRM_FORMAT_INVALID; Hyprutils::Memory::CSharedPointer<IBuffer> buffer; int64_t explicitInFence = -1, explicitOutFence = -1; + Hyprutils::Math::Mat3x3 ctm; }; const SInternalState& state(); @@ -84,6 +87,7 @@ void setExplicitInFence(int64_t fenceFD); // -1 removes void setExplicitOutFence(int64_t fenceFD); // -1 removes void resetExplicitFences(); + void setCTM(const Hyprutils::Math::Mat3x3& ctm); private: SInternalState internalState; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/nix/default.nix new/aquamarine-0.4.4/nix/default.nix --- old/aquamarine-0.4.1/nix/default.nix 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/nix/default.nix 2024-11-09 15:40:00.000000000 +0100 @@ -1,6 +1,7 @@ { lib, stdenv, + stdenvAdapters, cmake, hwdata, hyprutils, @@ -10,61 +11,73 @@ libffi, libGL, libinput, - libseat, mesa, pixman, pkg-config, + seatd, udev, wayland, wayland-protocols, wayland-scanner, version ? "git", doCheck ? false, -}: -stdenv.mkDerivation { - pname = "aquamarine"; - inherit version doCheck; - src = ../.; - - strictDeps = true; - - depsBuildBuild = [ - pkg-config + debug ? false, +}: let + inherit (builtins) foldl'; + inherit (lib.lists) flatten; + + adapters = flatten [ + stdenvAdapters.useMoldLinker + (lib.optional debug stdenvAdapters.keepDebugInfo) ]; - nativeBuildInputs = [ - cmake - hyprwayland-scanner - pkg-config - wayland-scanner - ]; - - buildInputs = [ - hwdata - hyprutils - libdisplay-info - libdrm - libffi - libGL - libinput - libseat - mesa - pixman - udev - wayland - wayland-protocols - ]; - - outputs = ["out" "dev"]; - - cmakeBuildType = "RelWithDebInfo"; - - dontStrip = true; - - meta = { - homepage = "https://github.com/hyprwm/aquamarine"; - description = "A very light linux rendering backend library"; - license = lib.licenses.bsd3; - platforms = lib.platforms.linux; - }; -} + customStdenv = foldl' (acc: adapter: adapter acc) stdenv adapters; +in + customStdenv.mkDerivation { + pname = "aquamarine"; + inherit version doCheck; + src = ../.; + + strictDeps = true; + + depsBuildBuild = [ + pkg-config + ]; + + nativeBuildInputs = [ + cmake + hyprwayland-scanner + pkg-config + ]; + + buildInputs = [ + hwdata + hyprutils + libdisplay-info + libdrm + libffi + libGL + libinput + mesa + pixman + seatd + udev + wayland + wayland-protocols + wayland-scanner + ]; + + outputs = ["out" "dev"]; + + cmakeBuildType = + if debug + then "Debug" + else "RelWithDebInfo"; + + meta = { + homepage = "https://github.com/hyprwm/aquamarine"; + description = "A very light linux rendering backend library"; + license = lib.licenses.bsd3; + platforms = lib.platforms.linux; + }; + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/allocator/GBM.cpp new/aquamarine-0.4.4/src/allocator/GBM.cpp --- old/aquamarine-0.4.1/src/allocator/GBM.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/allocator/GBM.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -105,17 +105,16 @@ // check if we can use modifiers. If the requested support has any explicit modifier // supported by the primary backend, we can. - if (!RENDERABLE.empty()) { - TRACE(allocator->backend->log(AQ_LOG_TRACE, std::format("GBM: Renderable has {} formats, clipping", RENDERABLE.size()))); + for (auto const& f : FORMATS) { + if (f.drmFormat != attrs.format) + continue; - for (auto const& f : FORMATS) { - if (f.drmFormat != attrs.format) + for (auto const& m : f.modifiers) { + if (m == DRM_FORMAT_MOD_INVALID) continue; - for (auto const& m : f.modifiers) { - if (m == DRM_FORMAT_MOD_INVALID) - continue; - + if (!RENDERABLE.empty()) { + TRACE(allocator->backend->log(AQ_LOG_TRACE, std::format("GBM: Renderable has {} formats, clipping", RENDERABLE.size()))); if (params.scanout && !CURSOR && !MULTIGPU) { // regular scanout plane, check if the format is renderable auto rformat = std::find_if(RENDERABLE.begin(), RENDERABLE.end(), [f](const auto& e) { return e.drmFormat == f.drmFormat; }); @@ -130,9 +129,8 @@ continue; } } - - explicitModifiers.push_back(m); } + explicitModifiers.push_back(m); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/Backend.cpp new/aquamarine-0.4.4/src/backend/Backend.cpp --- old/aquamarine-0.4.1/src/backend/Backend.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/Backend.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -166,6 +166,9 @@ b->onReady(); } + if (session) + session->onReady(); + sessionFDs = session ? session->pollFDs() : std::vector<Hyprutils::Memory::CSharedPointer<SPollFD>>{}; return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/Headless.cpp new/aquamarine-0.4.4/src/backend/Headless.cpp --- old/aquamarine-0.4.1/src/backend/Headless.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/Headless.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -131,6 +131,7 @@ bool Aquamarine::CHeadlessBackend::createOutput(const std::string& name) { auto output = SP<CHeadlessOutput>(new CHeadlessOutput(name.empty() ? std::format("HEADLESS-{}", ++outputIDCounter) : name, self.lock())); outputs.emplace_back(output); + output->modes.emplace_back(SP<SOutputMode>(new SOutputMode(Vector2D{1920, 1080}, 60, true))); output->swapchain = CSwapchain::create(backend->primaryAllocator, self.lock()); output->self = output; backend->events.newOutput.emit(SP<IOutput>(output)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/Session.cpp new/aquamarine-0.4.4/src/backend/Session.cpp --- old/aquamarine-0.4.1/src/backend/Session.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/Session.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -264,24 +264,7 @@ } void Aquamarine::CSession::onReady() { - for (auto const& d : libinputDevices) { - if (d->keyboard) - backend->events.newKeyboard.emit(SP<IKeyboard>(d->keyboard)); - if (d->mouse) - backend->events.newPointer.emit(SP<IPointer>(d->mouse)); - if (d->touch) - backend->events.newTouch.emit(SP<ITouch>(d->touch)); - if (d->switchy) - backend->events.newSwitch.emit(SP<ITouch>(d->touch)); - if (d->tablet) - backend->events.newTablet.emit(SP<ITablet>(d->tablet)); - if (d->tabletPad) - backend->events.newTabletPad.emit(SP<ITabletPad>(d->tabletPad)); - - for (auto const& t : d->tabletTools) { - backend->events.newTabletTool.emit(SP<ITabletTool>(t)); - } - } + ; } void Aquamarine::CSession::dispatchUdevEvents() { @@ -377,7 +360,12 @@ void Aquamarine::CSession::dispatchPendingEventsAsync() { dispatchLibseatEvents(); + + // only linux libudev allows us to asynchronously dispatch outstanding without blocking +#if defined(__linux__) dispatchUdevEvents(); +#endif + dispatchLibinputEvents(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/Wayland.cpp new/aquamarine-0.4.4/src/backend/Wayland.cpp --- old/aquamarine-0.4.1/src/backend/Wayland.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/Wayland.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -82,6 +82,9 @@ return false; } + auto XDGCURRENTDESKTOP = getenv("XDG_CURRENT_DESKTOP"); + backend->log(AQ_LOG_DEBUG, std::format("Connected to a wayland compositor: {}", (XDGCURRENTDESKTOP ? XDGCURRENTDESKTOP : "unknown (XDG_CURRENT_DEKSTOP unset?)"))); + waylandState.registry = makeShared<CCWlRegistry>((wl_proxy*)wl_display_get_registry(waylandState.display)); backend->log(AQ_LOG_DEBUG, std::format("Got registry at 0x{:x}", (uintptr_t)waylandState.registry->resource())); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/drm/DRM.cpp new/aquamarine-0.4.4/src/backend/drm/DRM.cpp --- old/aquamarine-0.4.1/src/backend/drm/DRM.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/drm/DRM.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -331,7 +331,7 @@ if (c->crtc->pendingCursor) data.cursorFB = c->crtc->pendingCursor; - if (data.cursorFB && data.cursorFB->buffer->dmabuf().modifier == DRM_FORMAT_MOD_INVALID) + if (data.cursorFB && (data.cursorFB->dead || data.cursorFB->buffer->dmabuf().modifier == DRM_FORMAT_MOD_INVALID)) data.cursorFB = nullptr; backend->log(AQ_LOG_DEBUG, @@ -1183,6 +1183,8 @@ output->supportsExplicit = backend->drmProps.supportsTimelines && crtc->props.out_fence_ptr && crtc->primary->props.in_fence_fd; backend->backend->log(AQ_LOG_DEBUG, std::format("drm: Explicit sync {}", output->supportsExplicit ? "supported" : "unsupported")); + + backend->backend->log(AQ_LOG_DEBUG, std::format("drm: connector {} crtc {} CTM", szName, (crtc->props.ctm ? "supports" : "doesn't support"))); } void Aquamarine::SDRMConnector::connect(drmModeConnector* connector) { @@ -1577,6 +1579,9 @@ } } + if (COMMITTED & COutputState::eOutputStateProperties::AQ_OUTPUT_STATE_CTM) + data.ctm = STATE.ctm; + data.blocking = BLOCKING || formatMismatch; data.modeset = NEEDS_RECONFIG || lastCommitNoBuffer || formatMismatch; data.flags = flags; @@ -2051,6 +2056,7 @@ } lease->leaseFD = leaseFD; + lease->backend = backend; backend->log(AQ_LOG_DEBUG, std::format("drm lease: lease granted with lessee id {}", lease->lesseeID)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/drm/Props.cpp new/aquamarine-0.4.4/src/backend/drm/Props.cpp --- old/aquamarine-0.4.1/src/backend/drm/Props.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/drm/Props.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -36,8 +36,10 @@ static const struct prop_info crtc_info[] = { #define INDEX(name) (offsetof(SDRMCRTC::UDRMCRTCProps, name) / sizeof(uint32_t)) - {"ACTIVE", INDEX(active)}, {"GAMMA_LUT", INDEX(gamma_lut)}, {"GAMMA_LUT_SIZE", INDEX(gamma_lut_size)}, - {"MODE_ID", INDEX(mode_id)}, {"OUT_FENCE_PTR", INDEX(out_fence_ptr)}, {"VRR_ENABLED", INDEX(vrr_enabled)}, + {"ACTIVE", INDEX(active)}, {"CTM", INDEX(ctm)}, + {"GAMMA_LUT", INDEX(gamma_lut)}, {"GAMMA_LUT_SIZE", INDEX(gamma_lut_size)}, + {"MODE_ID", INDEX(mode_id)}, {"OUT_FENCE_PTR", INDEX(out_fence_ptr)}, + {"VRR_ENABLED", INDEX(vrr_enabled)}, #undef INDEX }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/backend/drm/impl/Atomic.cpp new/aquamarine-0.4.4/src/backend/drm/impl/Atomic.cpp --- old/aquamarine-0.4.1/src/backend/drm/impl/Atomic.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/backend/drm/impl/Atomic.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -109,6 +109,9 @@ if (connector->crtc->props.gamma_lut && data.atomic.gammad) add(connector->crtc->id, connector->crtc->props.gamma_lut, data.atomic.gammaLut); + if (connector->crtc->props.ctm && data.atomic.ctmd) + add(connector->crtc->id, connector->crtc->props.ctm, data.atomic.ctmBlob); + if (connector->crtc->props.vrr_enabled) add(connector->crtc->id, connector->crtc->props.vrr_enabled, (uint64_t)STATE.adaptiveSync); @@ -197,6 +200,7 @@ if (data.atomic.blobbed) rollbackBlob(&conn->crtc->atomic.modeID, data.atomic.modeBlob); rollbackBlob(&conn->crtc->atomic.gammaLut, data.atomic.gammaLut); + rollbackBlob(&conn->crtc->atomic.ctm, data.atomic.ctmBlob); destroyBlob(data.atomic.fbDamage); } @@ -211,6 +215,7 @@ if (data.atomic.blobbed) commitBlob(&conn->crtc->atomic.modeID, data.atomic.modeBlob); commitBlob(&conn->crtc->atomic.gammaLut, data.atomic.gammaLut); + commitBlob(&conn->crtc->atomic.ctm, data.atomic.ctmBlob); destroyBlob(data.atomic.fbDamage); } @@ -263,6 +268,30 @@ } } + if ((STATE.committed & COutputState::AQ_OUTPUT_STATE_CTM) && data.ctm.has_value()) { + if (!connector->crtc->props.ctm) + connector->backend->backend->log(AQ_LOG_ERROR, "atomic drm: failed to commit ctm: no ctm prop support"); + else { + static auto doubleToS3132Fixed = [](const double val) -> uint64_t { + const uint64_t result = std::abs(val) * (1ULL << 32); + if (val < 0) + return result | 1ULL << 63; + return result; + }; + + drm_color_ctm ctm = {0}; + for (size_t i = 0; i < 9; ++i) { + ctm.matrix[i] = doubleToS3132Fixed(data.ctm->getMatrix()[i]); + } + + if (drmModeCreatePropertyBlob(connector->backend->gpu->fd, &ctm, sizeof(drm_color_ctm), &data.atomic.ctmBlob)) { + connector->backend->backend->log(AQ_LOG_ERROR, "atomic drm: failed to create a ctm blob"); + data.atomic.ctmBlob = 0; + } else + data.atomic.ctmd = true; + } + } + if ((STATE.committed & COutputState::AQ_OUTPUT_STATE_DAMAGE) && connector->crtc->primary->props.fb_damage_clips && MODE) { if (STATE.damage.empty()) data.atomic.fbDamage = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aquamarine-0.4.1/src/output/Output.cpp new/aquamarine-0.4.4/src/output/Output.cpp --- old/aquamarine-0.4.1/src/output/Output.cpp 2024-09-08 01:51:38.000000000 +0200 +++ new/aquamarine-0.4.4/src/output/Output.cpp 2024-11-09 15:40:00.000000000 +0100 @@ -115,6 +115,11 @@ internalState.explicitOutFence = -1; } +void Aquamarine::COutputState::setCTM(const Hyprutils::Math::Mat3x3& ctm) { + internalState.ctm = ctm; + internalState.committed |= AQ_OUTPUT_STATE_CTM; +} + void Aquamarine::COutputState::onCommit() { internalState.committed = 0; internalState.damage.clear(); ++++++ aquamarine.obsinfo ++++++ --- /var/tmp/diff_new_pack.2gNdIl/_old 2024-11-09 21:00:11.434961717 +0100 +++ /var/tmp/diff_new_pack.2gNdIl/_new 2024-11-09 21:00:11.450962382 +0100 @@ -1,5 +1,5 @@ name: aquamarine -version: 0.4.1 -mtime: 1725753098 -commit: e4a13203112a036fc7f437d391c7810f3dd5ab52 +version: 0.4.4 +mtime: 1731163200 +commit: f5ed91d122c8b84d57a24bf65a919207475dc3a7
