Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package aquamarine for openSUSE:Factory 
checked in at 2026-09-24 23:00:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aquamarine (Old)
 and      /work/SRC/openSUSE:Factory/.aquamarine.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "aquamarine"

Thu Sep 24 23:00:11 2026 rev:13 rq:1380160 version:0.15.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/aquamarine/aquamarine.changes    2026-09-02 
17:05:04.013161666 +0200
+++ /work/SRC/openSUSE:Factory/.aquamarine.new.383539/aquamarine.changes        
2026-09-24 23:02:09.445015051 +0200
@@ -1,0 +2,11 @@
+Sat Sep 19 17:35:58 UTC 2026 - Nassim Lhadj <[email protected]>
+
+- Update to aquamarine version 0.15.1:
+  * drm: don't terminate shared EGL displays in ~CDRMRenderer
+  * drm: reserve CRTCs used by redundant tiles
+  * session: fix libinput missing new events on resume
+  * drm: release output on disconnect manually
+  * renderer: fix version pragmas not being on the first line
+  * drm: fix UAF in frameIdle
+
+-------------------------------------------------------------------

Old:
----
  aquamarine-0.15.0.tar.xz

New:
----
  aquamarine-0.15.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ aquamarine.spec ++++++
--- /var/tmp/diff_new_pack.1A1Lqn/_old  2026-09-24 23:02:10.018039011 +0200
+++ /var/tmp/diff_new_pack.1A1Lqn/_new  2026-09-24 23:02:10.019039053 +0200
@@ -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.15.0
+Version:        0.15.1
 Release:        0
 Summary:        Rendering backend library
 License:        BSD-3-Clause

++++++ aquamarine-0.15.0.tar.xz -> aquamarine-0.15.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aquamarine-0.15.0/VERSION 
new/aquamarine-0.15.1/VERSION
--- old/aquamarine-0.15.0/VERSION       2026-08-29 17:19:44.000000000 +0200
+++ new/aquamarine-0.15.1/VERSION       2026-09-17 09:32:02.000000000 +0200
@@ -1 +1 @@
-0.15.0
+0.15.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aquamarine-0.15.0/include/aquamarine/backend/Session.hpp 
new/aquamarine-0.15.1/include/aquamarine/backend/Session.hpp
--- old/aquamarine-0.15.0/include/aquamarine/backend/Session.hpp        
2026-08-29 17:19:44.000000000 +0200
+++ new/aquamarine-0.15.1/include/aquamarine/backend/Session.hpp        
2026-09-17 09:32:02.000000000 +0200
@@ -223,6 +223,10 @@
         bool                                                            
switchVT(uint32_t vt);
         void                                                            
onReady();
 
+        void                                                            
dispatchUdevEvents();
+        void                                                            
dispatchLibinputEvents();
+        void                                                            
dispatchLibseatEvents();
+
         struct SAddDrmCardEvent {
             std::string path;
         };
@@ -237,9 +241,6 @@
         Hyprutils::Memory::CWeakPointer<CBackend>               backend;
         std::vector<Hyprutils::Memory::CSharedPointer<SPollFD>> polls;
 
-        void                                                    
dispatchUdevEvents();
-        void                                                    
dispatchLibinputEvents();
-        void                                                    
dispatchLibseatEvents();
         void                                                    
handleLibinputEvent(libinput_event* e);
         void                                                    
handleLibinputTabletToolAxis(libinput_event* e);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aquamarine-0.15.0/src/backend/Session.cpp 
new/aquamarine-0.15.1/src/backend/Session.cpp
--- old/aquamarine-0.15.0/src/backend/Session.cpp       2026-08-29 
17:19:44.000000000 +0200
+++ new/aquamarine-0.15.1/src/backend/Session.cpp       2026-09-17 
09:32:02.000000000 +0200
@@ -79,8 +79,10 @@
 static void libseatEnableSeat(struct libseat* seat, void* data) {
     auto PSESSION    = (Aquamarine::CSession*)data;
     PSESSION->active = true;
-    if (PSESSION->libinputHandle)
+    if (PSESSION->libinputHandle) {
         libinput_resume(PSESSION->libinputHandle);
+        PSESSION->dispatchLibinputEvents();
+    }
     PSESSION->events.changeActive.emit();
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aquamarine-0.15.0/src/backend/drm/DRM.cpp 
new/aquamarine-0.15.1/src/backend/drm/DRM.cpp
--- old/aquamarine-0.15.0/src/backend/drm/DRM.cpp       2026-08-29 
17:19:44.000000000 +0200
+++ new/aquamarine-0.15.1/src/backend/drm/DRM.cpp       2026-09-17 
09:32:02.000000000 +0200
@@ -998,7 +998,7 @@
             if (c->crtc != crtc)
                 continue;
 
-            if (c->status != DRM_MODE_CONNECTED || c->tilingRedundant)
+            if (c->status != DRM_MODE_CONNECTED && !c->tilingRedundant)
                 continue;
 
             backend->log(AQ_LOG_DEBUG, std::format("drm: slot {} crtc {} taken 
by {}, skipping", i, c->crtc->id, c->szName));
@@ -1073,7 +1073,7 @@
     }
 
     for (auto const& c : connectors) {
-        if (c->status == DRM_MODE_CONNECTED)
+        if (c->status == DRM_MODE_CONNECTED || c->tilingRedundant)
             continue;
 
         if (c->crtc)
@@ -2133,6 +2133,26 @@
     backend->cancelAsyncOutput(output.get());
     invalidateFrame();
 
+    // normal output commits reject disconnected connectors, so disable KMS
+    // directly before releasing the output and its framebuffer references.
+    if (crtc && backend->backend->session && backend->backend->session->active 
&& output->enabledState) {
+        const auto QUEUE_KEY = crtc->id;
+        if (backend->pauseCommitQueue(QUEUE_KEY)) {
+            CScopeGuard             resume([this, QUEUE_KEY] { 
backend->resumeCommitQueue(QUEUE_KEY); });
+            SDRMConnectorCommitData data = {};
+            data.modeset                 = true;
+            data.blocking                = true;
+            data.committed               = 
COutputState::AQ_OUTPUT_STATE_ENABLED;
+
+            if (backend->impl->commit(self.lock(), data)) {
+                output->enabledState = false;
+                backend->log(AQ_LOG_DEBUG, std::format("drm: Disabled KMS 
output {} before disconnect", szName));
+            } else
+                backend->log(AQ_LOG_ERROR, std::format("drm: Failed to disable 
KMS output {} before disconnect", szName));
+        } else
+            backend->log(AQ_LOG_ERROR, std::format("drm: Failed to pause 
commit queue for disconnect of {}", szName));
+    }
+
     status = DRM_MODE_DISCONNECTED;
     releaseFBReferences();
 
@@ -2954,7 +2974,7 @@
 
     if (!frameIdle) {
         frameIdle = makeShared<std::function<void(void)>>([this, self_ = self, 
backend_ = backend]() {
-            if (!self)
+            if (!self_)
                 return;
 
             connector->sched.setFrameScheduled(false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aquamarine-0.15.0/src/backend/drm/Renderer.cpp 
new/aquamarine-0.15.1/src/backend/drm/Renderer.cpp
--- old/aquamarine-0.15.0/src/backend/drm/Renderer.cpp  2026-08-29 
17:19:44.000000000 +0200
+++ new/aquamarine-0.15.1/src/backend/drm/Renderer.cpp  2026-09-17 
09:32:02.000000000 +0200
@@ -82,8 +82,7 @@
     return prog;
 }
 
-inline const std::string VERT_SRC = R"#(
-#version 300 es
+inline const std::string VERT_SRC = R"#(#version 300 es
 precision highp float;
 
 uniform mat3 proj;
@@ -98,8 +97,7 @@
     v_texcoord = texcoord;
 })#";
 
-inline const std::string FRAG_SRC = R"#(
-#version 300 es
+inline const std::string FRAG_SRC = R"#(#version 300 es
 precision highp float;
 
 in vec2 v_texcoord;
@@ -111,8 +109,7 @@
     fragColor = texture(tex, v_texcoord);
 })#";
 
-inline const std::string FRAG_SRC_EXT = R"#(
-#version 300 es
+inline const std::string FRAG_SRC_EXT = R"#(#version 300 es
 #extension GL_OES_EGL_image_external_essl3 : require
 precision highp float;
 
@@ -388,7 +385,10 @@
     if (egl.display && egl.context != EGL_NO_CONTEXT && egl.context != nullptr)
         eglDestroyContext(egl.display, egl.context);
 
-    if (egl.display)
+    // without EGL_KHR_display_reference, eglTerminate destroys a display that 
may be shared
+    // with other users of the same device in this process (e.g. the 
compositor's own EGL state),
+    // invalidating their contexts. Only terminate when reference tracking is 
in effect.
+    if (egl.display && exts.KHR_display_reference)
         eglTerminate(egl.display);
 
     eglReleaseThread();

++++++ aquamarine.obsinfo ++++++
--- /var/tmp/diff_new_pack.1A1Lqn/_old  2026-09-24 23:02:10.156044782 +0200
+++ /var/tmp/diff_new_pack.1A1Lqn/_new  2026-09-24 23:02:10.159044907 +0200
@@ -1,5 +1,5 @@
 name: aquamarine
-version: 0.15.0
-mtime: 1788016784
-commit: 783bfd9ae441d1d0519b979ac68b73ddd6e81df0
+version: 0.15.1
+mtime: 1789630322
+commit: f31c47a1b9d300847d8fc3108ad959448103dfc1
 

Reply via email to