commit:     26ad2f1710c521c5ce3388c97039ad1a34da4b03
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Jul  9 17:38:23 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Jul  9 17:46:06 2025 +0000
URL:        https://gitweb.gentoo.org/proj/kde.git/commit/?id=26ad2f17

media-plugins/gst-plugins-qt6: add 1.24.11 temporarily as standalone pkg

... not using gstreamer-meson.eclass until necessary changes hit ::gentoo.

Bug: https://bugs.gentoo.org/810814
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/gst-plugins-qt6-1.24.11-kamoso.patch     | 141 +++++++++++++++++++++
 .../gst-plugins-qt6/gst-plugins-qt6-1.24.11.ebuild |  60 +++++++++
 media-plugins/gst-plugins-qt6/metadata.xml         |  11 ++
 profiles/categories                                |   1 +
 4 files changed, 213 insertions(+)

diff --git 
a/media-plugins/gst-plugins-qt6/files/gst-plugins-qt6-1.24.11-kamoso.patch 
b/media-plugins/gst-plugins-qt6/files/gst-plugins-qt6-1.24.11-kamoso.patch
new file mode 100644
index 0000000000..365f9676bd
--- /dev/null
+++ b/media-plugins/gst-plugins-qt6/files/gst-plugins-qt6-1.24.11-kamoso.patch
@@ -0,0 +1,141 @@
+https://mail.kde.org/pipermail/release-team/2025-June/013691.html
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9226
+
+From ae57ec2ebbbbac9de40dd36e2ed54b12fe7ed869 Mon Sep 17 00:00:00 2001
+From: Aleix Pol <[email protected]>
+Date: Mon, 26 May 2025 23:51:16 +0200
+Subject: [PATCH] qml6glitem,qtitem: Allow configuring if the item will consume
+ input events
+
+At the moment we are always accepting the input events to forward into
+GStreamer infrastructure. This works but we might have other uses for
+such events elsewhere in the QtQuick scene so allow opting out to this
+behaviour.
+
+Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9226>
+---
+ ext/qt6/qt6glitem.cc     | 22 +++++++++++++++++--
+ ext/qt6/qt6glitem.h      |  9 +++++++-
+ 2 files changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/ext/qt6/qt6glitem.cc b/ext/qt6/qt6glitem.cc
+index 971a027de969..d1d89c3fd7f3 100644
+--- a/ext/qt6/qt6glitem.cc
++++ b/ext/qt6/qt6glitem.cc
+@@ -193,6 +193,16 @@ Qt6GLVideoItem::setForceAspectRatio(bool 
force_aspect_ratio)
+   emit forceAspectRatioChanged(force_aspect_ratio);
+ }
+ 
++void
++Qt6GLVideoItem::setAcceptEvents(bool accept)
++{
++  if (accept == acceptEvents)
++    return;
++
++  acceptEvents = accept;
++  Q_EMIT acceptEventsChanged(acceptEvents);
++}
++
+ bool
+ Qt6GLVideoItem::getForceAspectRatio()
+ {
+@@ -487,18 +497,22 @@ Qt6GLVideoItem::wheelEvent(QWheelEvent * event)
+     g_object_unref (element);
+   }
+   g_mutex_unlock (&this->priv->lock);
++
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+-Qt6GLVideoItem::hoverEnterEvent(QHoverEvent *)
++Qt6GLVideoItem::hoverEnterEvent(QHoverEvent *event)
+ {
+   mouseHovering = true;
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+-Qt6GLVideoItem::hoverLeaveEvent(QHoverEvent *)
++Qt6GLVideoItem::hoverLeaveEvent(QHoverEvent *event)
+ {
+   mouseHovering = false;
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+@@ -527,6 +541,7 @@ Qt6GLVideoItem::hoverMoveEvent(QHoverEvent * event)
+     }
+   }
+   g_mutex_unlock (&this->priv->lock);
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+@@ -589,6 +604,7 @@ Qt6GLVideoItem::touchEvent(QTouchEvent * event)
+ 
+   g_object_unref (element);
+   g_mutex_unlock (&this->priv->lock);
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+@@ -641,12 +657,14 @@ Qt6GLVideoItem::mousePressEvent(QMouseEvent * event)
+ {
+   forceActiveFocus();
+   sendMouseEvent(event, TRUE);
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+ Qt6GLVideoItem::mouseReleaseEvent(QMouseEvent * event)
+ {
+   sendMouseEvent(event, FALSE);
++  event->setAccepted(acceptEvents);
+ }
+ 
+ void
+diff --git a/ext/qt6/qt6glitem.h b/ext/qt6/qt6glitem.h
+index bfe28a1fc606..886a4a221f54 100644
+--- a/ext/qt6/qt6glitem.h
++++ b/ext/qt6/qt6glitem.h
+@@ -73,7 +73,10 @@ class Qt6GLVideoItem : public QQuickItem, protected 
QOpenGLFunctions
+                READ getForceAspectRatio
+                WRITE setForceAspectRatio
+                NOTIFY forceAspectRatioChanged)
+-
++    Q_PROPERTY(bool acceptEvents
++               READ getAcceptEvents
++               WRITE setAcceptEvents
++               NOTIFY acceptEventsChanged)
+ public:
+     Qt6GLVideoItem();
+     ~Qt6GLVideoItem();
+@@ -83,6 +86,8 @@ public:
+     void setForceAspectRatio(bool);
+     bool getForceAspectRatio();
+     bool itemInitialized();
++    bool getAcceptEvents() const { return acceptEvents; }
++    void setAcceptEvents(bool accept);
+ 
+     QSharedPointer<Qt6GLVideoItemInterface> getInterface() { return proxy; };
+     /* private for C interface ... */
+@@ -91,6 +96,7 @@ public:
+ Q_SIGNALS:
+     void itemInitializedChanged();
+     void forceAspectRatioChanged(bool);
++    void acceptEventsChanged(bool acceptEvents);
+ 
+ private Q_SLOTS:
+     void handleWindowChanged(QQuickWindow * win);
+@@ -120,6 +126,7 @@ private:
+ 
+     quint32 mousePressedButton;
+     bool mouseHovering;
++    bool acceptEvents = true;
+ 
+     QSharedPointer<Qt6GLVideoItemInterface> proxy;
+ };
+-- 
+GitLab
+

diff --git a/media-plugins/gst-plugins-qt6/gst-plugins-qt6-1.24.11.ebuild 
b/media-plugins/gst-plugins-qt6/gst-plugins-qt6-1.24.11.ebuild
new file mode 100644
index 0000000000..646c8a4f29
--- /dev/null
+++ b/media-plugins/gst-plugins-qt6/gst-plugins-qt6-1.24.11.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+GST_ORG_MODULE=gst-plugins-good
+PYTHON_COMPAT=( python3_{11..13} )
+inherit meson python-any-r1 xdg-utils
+
+DESCRIPTION="Qt6 QML video sink plugin for GStreamer"
+HOMEPAGE="https://gstreamer.freedesktop.org/";
+SRC_URI="https://gstreamer.freedesktop.org/src/${GST_ORG_MODULE}/${GST_ORG_MODULE}-${PV}.tar.xz";
+S="${WORKDIR}/${GST_ORG_MODULE}-${PV}"
+
+LICENSE="GPL-2"
+SLOT="1.0"
+KEYWORDS="~amd64"
+IUSE="X"
+
+RESTRICT="test"
+
+DEPEND="
+       dev-qt/qtbase:6=[gui,opengl,wayland,X?]
+       dev-qt/qtdeclarative:6[opengl]
+       >=media-libs/gst-plugins-base-${PV}:${SLOT}[opengl,wayland,X?]
+"
+RDEPEND="${DEPEND}
+       >=dev-libs/glib-2.64.0:2
+       >=media-libs/gstreamer-$(ver_cut 1-2):${SLOT}
+       >=media-libs/${GST_ORG_MODULE}-${PV}:${SLOT}
+"
+RDEPEND+=" || ( >=dev-qt/qtbase-6.10:6[wayland] <dev-qt/qtwayland-6.10:6 )"
+BDEPEND="${PYTHON_DEPS}
+       app-arch/xz-utils
+       virtual/pkgconfig
+       virtual/perl-JSON-PP
+"
+
+PATCHES=( "${FILESDIR}/${P}-kamoso.patch" ) # in >=1.26.3, bug #958983
+
+src_configure() {
+       xdg_environment_reset
+       local emesonargs=(
+               $(meson_feature X qt-x11)
+               -Dqt-egl=disabled
+               -Dqt-wayland=enabled
+               # disable all else:
+               -Dalpha=disabled -Dapetag=disabled -Daudiofx=disabled 
-Daudioparsers=disabled -Dauparse=disabled -Dautodetect=disabled -Davi=disabled 
-Dcutter=disabled -Ddebugutils=disabled -Ddeinterlace=disabled -Ddtmf=disabled 
-Deffectv=disabled -Dequalizer=disabled -Dflv=disabled -Dflx=disabled 
-Dgoom=disabled -Dgoom2k1=disabled -Dicydemux=disabled -Did3demux=disabled 
-Dimagefreeze=disabled -Dinterleave=disabled -Disomp4=disabled -Dlaw=disabled 
-Dlevel=disabled -Dmatroska=disabled -Dmonoscope=disabled -Dmultifile=disabled 
-Dmultipart=disabled -Dreplaygain=disabled -Drtp=disabled -Drtpmanager=disabled 
-Drtsp=disabled -Dshapewipe=disabled -Dsmpte=disabled -Dspectrum=disabled 
-Dudp=disabled -Dvideobox=disabled -Dvideocrop=disabled -Dvideofilter=disabled 
-Dvideomixer=disabled -Dwavenc=disabled -Dwavparse=disabled -Dxingmux=disabled 
-Dy4m=disabled -Dadaptivedemux2=disabled -Daalib=disabled -Damrnb=disabled 
-Damrwbdec=disabled -Dbz2=disabled -Dcairo=disabled -Ddirectsound=disabled 
-Ddv=disabled -Ddv
 1394=disabled -Dflac=disabled -Dgdk-pixbuf=disabled -Dgtk3=disabled 
-Djack=disabled -Djpeg=disabled -Dlame=disabled -Dlibcaca=disabled 
-Dmpg123=disabled -Doss=disabled -Doss4=disabled -Dosxaudio=disabled 
-Dosxvideo=disabled -Dpng=disabled -Dpulse=disabled -Dshout2=disabled 
-Dspeex=disabled -Dtaglib=disabled -Dtwolame=disabled -Dvpx=disabled 
-Dwaveform=disabled -Dwavpack=disabled -Dqt5=disabled -Dqt6=enabled 
-Dsoup=disabled -Dv4l2=disabled -Dximagesrc=disabled -Dorc=disabled 
-Dexamples=disabled -Dpackage-name="Gentoo GStreamer ebuild" 
-Dpackage-origin="https://www.gentoo.org";
+       )
+       meson_src_configure
+}
+
+src_compile () {
+       meson_src_compile ext/qt6/libgstqml6.so
+}
+
+src_install () {
+       insinto /usr/$(get_libdir)/gstreamer-1.0
+       doins "${BUILD_DIR}"/ext/qt6/libgstqml6.so
+}

diff --git a/media-plugins/gst-plugins-qt6/metadata.xml 
b/media-plugins/gst-plugins-qt6/metadata.xml
new file mode 100644
index 0000000000..0860df6049
--- /dev/null
+++ b/media-plugins/gst-plugins-qt6/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Gentoo KDE Project</name>
+       </maintainer>
+       <upstream>
+               <remote-id 
type="freedesktop-gitlab">gstreamer/gstreamer</remote-id>
+       </upstream>
+</pkgmetadata>

diff --git a/profiles/categories b/profiles/categories
index e5ed1db0bd..38feb7e9f7 100644
--- a/profiles/categories
+++ b/profiles/categories
@@ -23,6 +23,7 @@ kde-misc
 kde-plasma
 media-gfx
 media-libs
+media-plugins
 media-sound
 media-video
 net-im

Reply via email to