Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package v4l2loopback for openSUSE:Factory 
checked in at 2025-11-27 15:21:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/v4l2loopback (Old)
 and      /work/SRC/openSUSE:Factory/.v4l2loopback.new.14147 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "v4l2loopback"

Thu Nov 27 15:21:50 2025 rev:27 rq:1320340 version:0.15.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/v4l2loopback/v4l2loopback.changes        
2025-10-16 17:40:06.879851606 +0200
+++ /work/SRC/openSUSE:Factory/.v4l2loopback.new.14147/v4l2loopback.changes     
2025-11-27 15:23:34.118059298 +0100
@@ -1,0 +2,10 @@
+Wed Nov 26 20:16:05 UTC 2025 - <[email protected]>
+
+- Update to version 0.15.3:
+  * Release v0.15.3
+  * slightly better name for compat macro
+  * use linux>=6.18 accessor for v4l2->private_data
+
+- Fix version 0.15.2 changelog
+
+-------------------------------------------------------------------
@@ -10,5 +19,0 @@
-  * Bump version to v0.15.1
-  * [ci] also allow skipping of exactly known kernel-version
-  * [ci] mark alpine/6.15.0.0-edge as known-failure
-  * [ci] don't fail if the badge-file did not change
-  * Adds support for XBGR32 (XR24)

Old:
----
  v4l2loopback-0.15.2.tar.xz

New:
----
  v4l2loopback-0.15.3.tar.xz

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

Other differences:
------------------
++++++ v4l2loopback.spec ++++++
--- /var/tmp/diff_new_pack.rIULBh/_old  2025-11-27 15:23:34.670082578 +0100
+++ /var/tmp/diff_new_pack.rIULBh/_new  2025-11-27 15:23:34.674082747 +0100
@@ -30,7 +30,7 @@
 %{!?_modulesloaddir: %define _modulesloaddir /usr/lib/modules-load.d/}
 
 Name:           v4l2loopback
-Version:        0.15.2
+Version:        0.15.3
 Release:        0
 Summary:        A kernel module to create V4L2 loopback devices
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.rIULBh/_old  2025-11-27 15:23:34.710084265 +0100
+++ /var/tmp/diff_new_pack.rIULBh/_new  2025-11-27 15:23:34.718084602 +0100
@@ -4,7 +4,7 @@
     <param name="scm">git</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
-    <param name="revision">v0.15.2</param>
+    <param name="revision">v0.15.3</param>
     <param name="changesgenerate">enable</param>
   </service>
   <service name="recompress" mode="manual">

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.rIULBh/_old  2025-11-27 15:23:34.750085952 +0100
+++ /var/tmp/diff_new_pack.rIULBh/_new  2025-11-27 15:23:34.754086120 +0100
@@ -1,5 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/v4l2loopback/v4l2loopback.git</param>
-              <param 
name="changesrevision">c394f8fb2c168932055c2577247c42390198d7c9</param></service></servicedata>
+              <param 
name="changesrevision">a7e4a4dea36187ad3550c797d647bcc50faced42</param></service></servicedata>
+(No newline at EOF)
 

++++++ v4l2loopback-0.15.2.tar.xz -> v4l2loopback-0.15.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v4l2loopback-0.15.2/ChangeLog 
new/v4l2loopback-0.15.3/ChangeLog
--- old/v4l2loopback-0.15.2/ChangeLog   2025-10-15 19:56:39.000000000 +0200
+++ new/v4l2loopback-0.15.3/ChangeLog   2025-11-24 14:15:11.000000000 +0100
@@ -1,3 +1,10 @@
+v4l2loopback (0.15.3) unstable; urgency=medium
+
+  [ IOhannes m zmölnig ]
+  * Use linux>=6.18 accessor for v4l2->private_data (#653)
+
+ -- IOhannes m zmölnig (Debian/GNU) <[email protected]>  Mon, 24 Nov 2025 
14:11:58 +0100
+
 v4l2loopback (0.15.2) unstable; urgency=medium
 
   [ Simon Richter ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v4l2loopback-0.15.2/NEWS new/v4l2loopback-0.15.3/NEWS
--- old/v4l2loopback-0.15.2/NEWS        2025-10-15 19:56:39.000000000 +0200
+++ new/v4l2loopback-0.15.3/NEWS        2025-11-24 14:15:11.000000000 +0100
@@ -1,3 +1,9 @@
+v4l2loopback (0.15.3) unstable; urgency=medium
+
+  * Fix oops with linux 6.18+
+
+ -- IOhannes m zmölnig (Debian/GNU) <[email protected]>  Mon, 24 Nov 2025 
14:11:58 +0100
+
 v4l2loopback (0.15.2) unstable; urgency=medium
 
   * Fix FTBFS with linux 6.18+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v4l2loopback-0.15.2/dkms.conf 
new/v4l2loopback-0.15.3/dkms.conf
--- old/v4l2loopback-0.15.2/dkms.conf   2025-10-15 19:56:39.000000000 +0200
+++ new/v4l2loopback-0.15.3/dkms.conf   2025-11-24 14:15:11.000000000 +0100
@@ -1,5 +1,5 @@
 PACKAGE_NAME="v4l2loopback"
-PACKAGE_VERSION="0.15.2"
+PACKAGE_VERSION="0.15.3"
 
 # V4L2_COLORSPACE_DCI_P3
 BUILD_EXCLUSIVE_KERNEL_MIN="4.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v4l2loopback-0.15.2/v4l2loopback.c 
new/v4l2loopback-0.15.3/v4l2loopback.c
--- old/v4l2loopback-0.15.2/v4l2loopback.c      2025-10-15 19:56:39.000000000 
+0200
+++ new/v4l2loopback-0.15.3/v4l2loopback.c      2025-11-24 14:15:11.000000000 
+0100
@@ -58,9 +58,16 @@
 #define timer_delete_sync del_timer_sync
 #endif
 
+#define fh_to_opener(ptr) container_of((ptr), struct v4l2_loopback_opener, fh)
+#define file_to_opener(ptr) \
+       container_of(file_to_v4l2_fh(ptr), struct v4l2_loopback_opener, fh)
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 18, 0)
+#define v4l2l_f_to_opener(_file, _fh) fh_to_opener(_fh)
 #define v4l2_fh_add(fh, filp) v4l2_fh_add(fh)
 #define v4l2_fh_del(fh, filp) v4l2_fh_del(fh)
+#else
+#define v4l2l_f_to_opener(_file, _fh) file_to_opener(_file)
 #endif
 
 #define V4L2LOOPBACK_VERSION_CODE                                              
\
@@ -413,8 +420,6 @@
        struct v4l2_fh fh;
 };
 
-#define fh_to_opener(ptr) container_of((ptr), struct v4l2_loopback_opener, fh)
-
 /* this is heavily inspired by the bttv driver found in the linux kernel */
 struct v4l2l_format {
        char *name;
@@ -894,7 +899,7 @@
                           struct v4l2_capability *cap)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        int device_nr = v4l2loopback_get_vdev_nr(dev->vdev);
        __u32 capabilities = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
 
@@ -929,7 +934,7 @@
                                  struct v4l2_frmsizeenum *argp)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
 
        /* there can be only one... */
        if (argp->index)
@@ -1011,7 +1016,7 @@
                                      struct v4l2_frmivalenum *argp)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
 
        /* there can be only one... */
        if (argp->index)
@@ -1054,7 +1059,7 @@
                               struct v4l2_fmtdesc *f)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        int fixed = dev->keep_format || has_other_owners(opener, dev);
        const struct v4l2l_format *fmt;
 
@@ -1088,7 +1093,7 @@
                              struct v4l2_format *f)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
 
        if (check_buffer_capability(dev, opener, f->type) < 0)
                return -EINVAL;
@@ -1112,7 +1117,7 @@
 static int vidioc_s_fmt_vid(struct file *file, void *fh, struct v4l2_format *f)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 token = opener->io_method == V4L2L_IO_TIMEOUT ?
                            V4L2L_TOKEN_TIMEOUT :
                            token_from_type(f->type);
@@ -1183,7 +1188,7 @@
 static int vidioc_g_fmt_cap(struct file *file, void *fh, struct v4l2_format *f)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, f->type) < 0)
                return -EINVAL;
        f->fmt.pix = dev->pix_format;
@@ -1214,7 +1219,7 @@
 static int vidioc_g_fmt_out(struct file *file, void *fh, struct v4l2_format *f)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, f->type) < 0)
                return -EINVAL;
        /*
@@ -1273,7 +1278,7 @@
        /* do not care about type of opener, hope these enums would always be
         * compatible */
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, parm->type) < 0)
                return -EINVAL;
        parm->parm.capture = dev->capture_param;
@@ -1288,7 +1293,7 @@
                         struct v4l2_streamparm *parm)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
 
        dprintk("S_PARM(frame-time=%u/%u)\n",
                parm->parm.capture.timeperframe.numerator,
@@ -1429,7 +1434,7 @@
 {
        __u32 index = outp->index;
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
 
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_OUTPUT))
                return -ENOTTY;
@@ -1460,7 +1465,7 @@
 static int vidioc_g_output(struct file *file, void *fh, unsigned int *index)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_OUTPUT))
                return -ENOTTY;
        if (index)
@@ -1474,7 +1479,7 @@
 static int vidioc_s_output(struct file *file, void *fh, unsigned int index)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_OUTPUT))
                return -ENOTTY;
        return index == 0 ? index : -EINVAL;
@@ -1488,7 +1493,7 @@
                             struct v4l2_input *inp)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        __u32 index = inp->index;
 
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_CAPTURE))
@@ -1526,7 +1531,7 @@
 static int vidioc_g_input(struct file *file, void *fh, unsigned int *index)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_CAPTURE))
                return -ENOTTY; /* NOTE: -EAGAIN might be more informative */
        if (index)
@@ -1540,7 +1545,7 @@
 static int vidioc_s_input(struct file *file, void *fh, unsigned int index)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        if (index != 0)
                return -EINVAL;
        if (check_buffer_capability(dev, opener, V4L2_BUF_TYPE_VIDEO_CAPTURE))
@@ -1634,7 +1639,7 @@
                          struct v4l2_requestbuffers *reqbuf)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 token = opener->io_method == V4L2L_IO_TIMEOUT ?
                            V4L2L_TOKEN_TIMEOUT :
                            token_from_type(reqbuf->type);
@@ -1763,7 +1768,7 @@
 static int vidioc_querybuf(struct file *file, void *fh, struct v4l2_buffer 
*buf)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 type = buf->type;
        u32 index = buf->index;
 
@@ -1826,7 +1831,7 @@
 static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        struct v4l2l_buffer *bufd;
        u32 index = buf->index;
        u32 type = buf->type;
@@ -1917,7 +1922,8 @@
 static int get_capture_buffer(struct file *file)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(file->private_data);
+       struct v4l2_loopback_opener *opener =
+               v4l2l_f_to_opener(file, file->private_data);
        int pos, timeout_happened;
        u32 index;
 
@@ -1972,7 +1978,7 @@
 static int vidioc_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 type = buf->type;
        int index;
        struct v4l2l_buffer *bufd;
@@ -2030,7 +2036,7 @@
 static int vidioc_streamon(struct file *file, void *fh, enum v4l2_buf_type 
type)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 token = token_from_type(type);
 
        /* short-circuit when using timeout buffer set */
@@ -2065,7 +2071,7 @@
                            enum v4l2_buf_type type)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        u32 token = token_from_type(type);
 
        /* short-circuit when using timeout buffer set */
@@ -2204,7 +2210,8 @@
        u8 *addr;
        unsigned long start, size, offset;
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(file->private_data);
+       struct v4l2_loopback_opener *opener =
+               v4l2l_f_to_opener(file, file->private_data);
        struct v4l2l_buffer *buffer = NULL;
        int result = 0;
        MARK();
@@ -2278,7 +2285,8 @@
                                       struct poll_table_struct *pts)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(file->private_data);
+       struct v4l2_loopback_opener *opener =
+               v4l2l_f_to_opener(file, file->private_data);
        __poll_t req_events = poll_requested_events(pts);
        int ret_mask = 0;
 
@@ -2349,7 +2357,8 @@
 static int v4l2_loopback_close(struct file *file)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(file->private_data);
+       struct v4l2_loopback_opener *opener =
+               v4l2l_f_to_opener(file, file->private_data);
        int result = 0;
        dprintk("close() -> dev@%p with image@%p\n", dev,
                dev ? dev->image : NULL);
@@ -2399,7 +2408,7 @@
 static int start_fileio(struct file *file, void *fh, enum v4l2_buf_type type)
 {
        struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
-       struct v4l2_loopback_opener *opener = fh_to_opener(fh);
+       struct v4l2_loopback_opener *opener = v4l2l_f_to_opener(file, fh);
        struct v4l2_requestbuffers reqbuf = { .count = dev->buffer_count,
                                              .memory = V4L2_MEMORY_MMAP,
                                              .type = type };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v4l2loopback-0.15.2/v4l2loopback.h 
new/v4l2loopback-0.15.3/v4l2loopback.h
--- old/v4l2loopback-0.15.2/v4l2loopback.h      2025-10-15 19:56:39.000000000 
+0200
+++ new/v4l2loopback-0.15.3/v4l2loopback.h      2025-11-24 14:15:11.000000000 
+0100
@@ -12,7 +12,7 @@
 
 #define V4L2LOOPBACK_VERSION_MAJOR 0
 #define V4L2LOOPBACK_VERSION_MINOR 15
-#define V4L2LOOPBACK_VERSION_BUGFIX 2
+#define V4L2LOOPBACK_VERSION_BUGFIX 3
 
 /* /dev/v4l2loopback interface */
 

Reply via email to