Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package scrcpy for openSUSE:Factory checked 
in at 2026-10-08 15:13:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/scrcpy (Old)
 and      /work/SRC/openSUSE:Factory/.scrcpy.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "scrcpy"

Thu Oct  8 15:13:54 2026 rev:7 rq:1383272 version:5.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/scrcpy/scrcpy.changes    2026-10-06 
19:17:25.533044428 +0200
+++ /work/SRC/openSUSE:Factory/.scrcpy.new.3698736/scrcpy.changes       
2026-10-08 15:14:28.558489927 +0200
@@ -1,0 +2,9 @@
+Thu Oct  8 06:57:44 UTC 2026 - [email protected]
+
+- Update to version 5.0.1:
+  * Accept DRM_FORMAT_RG88 for NV12 chroma plane (#7070, #7073)
+  * Fix H.265 hardware decoding on Windows (#7072)
+  * Use the GPU of the renderer for VA-API decoding (#7075, #7081)
+  * Force EGL only if VA-API is enabled (#7079)
+
+-------------------------------------------------------------------

Old:
----
  scrcpy-5.0.tar.gz

New:
----
  scrcpy-5.0.1.tar.gz

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

Other differences:
------------------
++++++ scrcpy.spec ++++++
--- /var/tmp/diff_new_pack.DbGuws/_old  2026-10-08 15:14:30.295562707 +0200
+++ /var/tmp/diff_new_pack.DbGuws/_new  2026-10-08 15:14:30.296562749 +0200
@@ -21,7 +21,7 @@
 the required pre-build %{_datadir}/%{name}/%{name}-server binary.
 
 Name:           scrcpy
-Version:        5.0
+Version:        5.0.1
 Release:        0
 Summary:        Display and control your Android device
 License:        Apache-2.0

++++++ SHA256SUMS.txt ++++++
--- /var/tmp/diff_new_pack.DbGuws/_old  2026-10-08 15:14:30.338564509 +0200
+++ /var/tmp/diff_new_pack.DbGuws/_new  2026-10-08 15:14:30.341564634 +0200
@@ -1,8 +1,8 @@
-26cbc9ad0aced6c2282455bef4fb43462605c1f8758c74b4ab1dbf818c229daa  
scrcpy-server-v5.0
-f052ad9eb981879e8c5f066c5ef122b39b6c9853b383d6497219030e6549baed  
scrcpy-linux-x86_64-v5.0.tar.gz
-31413dd59a80cb76e7747ef91b4994934b546c8860e8e7976046c612a50e5cc3  
scrcpy-win32-v5.0.zip
-44c10d9e82f20ea67227d14d37bf9fbe3603117c5736df3f514544a02ba20a73  
scrcpy-win64-v5.0.zip
-afc1db17b216f91470d2c8f41ea786ae18ab1cb2bc2324bc05ec3d7685aa6054  
scrcpy-winarm64-v5.0.zip
-7cb4e41c859b05b36e89dc9be6c353cc5980c00d7f7f6a763b5b355551b82e9c  
scrcpy-macos-aarch64-v5.0.tar.gz
-dacb995c8eb42528cb96b2da2a2e3110fe5c82281378e6044fc7cccf48a7c39a  
scrcpy-macos-x86_64-v5.0.tar.gz
+764eb6f79811d5211fe9df341120882ba9994c7a61b897d7bf3fb662e53bc536  
scrcpy-server-v5.0.1
+9f969d30cc574816077edecda65719c1c70b0aee1df1ba5fa00779ac07b8fd6e  
scrcpy-linux-x86_64-v5.0.1.tar.gz
+0cb65ebf1bce892fa4d1502d699af0c7a1a7f24d7febcb9ef72894e3f23fc2ad  
scrcpy-win32-v5.0.1.zip
+b12a2c4ee8be317422451fc7dcf8ee20a71b5ea7ef9ad73ddd825a25316227a5  
scrcpy-win64-v5.0.1.zip
+16c3fc2068df64946f670e3504b4752073ebae47a416a45b46e79a5ab19c689b  
scrcpy-winarm64-v5.0.1.zip
+33611e51977a8289e2e124b220f727895181ef2eb9060e0987a4dc2db9cf0d6b  
scrcpy-macos-aarch64-v5.0.1.tar.gz
+31a5467a9e907f162b093267cbbab1276b15c6e709c2ea8159566a8d165beb50  
scrcpy-macos-x86_64-v5.0.1.tar.gz
 

++++++ SHA256SUMS.txt.asc ++++++
--- /var/tmp/diff_new_pack.DbGuws/_old  2026-10-08 15:14:30.358565347 +0200
+++ /var/tmp/diff_new_pack.DbGuws/_new  2026-10-08 15:14:30.361565472 +0200
@@ -1,17 +1,17 @@
 -----BEGIN PGP SIGNATURE-----
 
-iQIzBAABCAAdFiEE454t5qVfWqbY77eaygH0bxhoOz0FAmrDelwACgkQygH0bxho
-Oz3D4xAAmuSsFFkQDB4PivacEahTWpcBESrsNMgQ5MgsXmqNlB+upVtvgv09ELJl
-MPI+o9rJ4sjt829GKgA+eua9UPe8ykKshryLjooQgdq9RVIZtqSYio7uK9+9PTM2
-1jNdKYU7sLAIW4h/EQvpKcOCQj0V8+ciM0EtphhnnL3xqDVxVUgVF6sxuq/Ka/ls
-2Xe05l0oqicj0xTD2OpOgzdiwaVDAMvUyC0IRCeetDcYxLEMmZyN49VEE0CuCKHE
-12G8wjFqd7hTWapMZRjdChblrCXsz+9UXNWs3/+u682RoyHR8BehqwGw4NlxDniv
-8Jgmh/6rWmZeY6US9sDw2lAmqcON5gJ0Q9o3cE3KNU2Hqm5f/ve+uvq1ZthXeOHg
-oFqmxRVlgpWcucErozYTUjaQ9J/OMCYQzz9zzvO2rTgUvEp71lGN9Z+fmpitWhxz
-5dZiYWio/cC2bguhg4Remc1EiHL0qvDkcB1YPrFG4SOIzR2GkQz1nUQKWEc3wgcx
-EM0aaKN+z7gQ9ICqzWmCCsmw89UtYafTWRItiehz+yPs/UNHeX3YPwd864iAn15A
-1Ntllf70rwbd/W/Z3qbfqqFyqgkt3yKRKTE2cICwEH8HTDV6ccdk5rLxjcTk2y3x
-mcwHOKCxMmHg/yeO+Eypzln0fCiYW80zG3a0zw+tPrEB1/ySblI=
-=7jRq
+iQIzBAABCAAdFiEE454t5qVfWqbY77eaygH0bxhoOz0FAmrHOoIACgkQygH0bxho
+Oz3DTg//ZTILTC0LaA/b9LxyhKoP6bBBVFfI/Bnkq3t1dKQ6BiYHUBCm8zmDKsf+
+lRIrlYlFG/vOB/tLIy+zKQ2bWj/EJQImXjdsD8Fwqt7srcIIcJKtjEgfKAj+ZvyF
+DFCWWD82ROieezApbeOYfGT+6d0ltQUbSEUwkvdpGknYfZbAC7ap+geit2kuF3D8
+8gF+3GxlsYVeGjItYCtloSyh324stRLoKQiL9IJOAbDgJ1JjVNq2Ulpa/cXx0iC0
+Fy/ALy3Rxi6OIjuwCMa363NFOfWBHn15eWGSRZm01VaHOymWEGbPyaJ2FMVLTsEQ
+tlNp7YEzTpEgOHP71u1xlxjfkOD9Yt29sSak0Ft5M/9Uf+Nm+VuZvu14C/KycCZt
+BAve1eFkmhAW3Omza/hWYEgo9ras/4cs777nnG6zP4MHLlJdOdQ0PoGEak0BA/P8
+mF735q72Cuc/95JRFPPH8Ev2m+F2j71AIe084qOOAClXPQMKTLxW7R6A7HKsa2O6
+4O4/6c/ZTKsSIG4d28QPbqG6ATiCzB4rZjcZKqDTRIQw95cmca1kK+jag5goBJgJ
+kp1NGeDrBgvgPRTui67N8yTXYbPQiLLhIJCO/wSrN7baHkBQh8XdXQGxA/jEQ2Cb
+6C198r2pn6OCqELiKw9tJ6nbzDY9kj9CgNe5mYVQ9XIJ/qPZo68=
+=CX0Y
 -----END PGP SIGNATURE-----
 

++++++ scrcpy-5.0.tar.gz -> scrcpy-5.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/README.md new/scrcpy-5.0.1/README.md
--- old/scrcpy-5.0/README.md    2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/README.md  2026-10-08 08:41:27.000000000 +0200
@@ -3,7 +3,7 @@
 source for the project. Do not download releases from random websites, even if
 their name contains `scrcpy`.**
 
-# scrcpy (v5.0)
+# scrcpy (v5.0.1)
 
 <img src="app/data/scrcpy.svg" width="128" height="128" alt="scrcpy" 
align="right" />
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/scrcpy-windows.rc 
new/scrcpy-5.0.1/app/scrcpy-windows.rc
--- old/scrcpy-5.0/app/scrcpy-windows.rc        2026-10-05 12:26:14.000000000 
+0200
+++ new/scrcpy-5.0.1/app/scrcpy-windows.rc      2026-10-08 08:41:27.000000000 
+0200
@@ -13,7 +13,7 @@
       VALUE "LegalCopyright", "Romain Vimont, Genymobile"
       VALUE "OriginalFilename", "scrcpy.exe"
       VALUE "ProductName", "scrcpy"
-      VALUE "ProductVersion", "5.0"
+      VALUE "ProductVersion", "5.0.1"
     END
   END
   BLOCK "VarFileInfo"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/egl.c 
new/scrcpy-5.0.1/app/src/egl.c
--- old/scrcpy-5.0/app/src/egl.c        2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/egl.c      2026-10-08 08:41:27.000000000 +0200
@@ -6,6 +6,25 @@
 
 #include "util/log.h"
 
+static bool
+sc_egl_has_extension(const char *extensions, const char *extension) {
+    assert(extensions);
+    assert(extension);
+    assert(!strchr(extension, ' '));
+
+    size_t len = strlen(extension);
+    const char *p = extensions;
+    while ((p = strstr(p, extension))) {
+        if ((p == extensions || p[-1] == ' ')
+                && (p[len] == '\0' || p[len] == ' ')) {
+            return true;
+        }
+        p += len;
+    }
+
+    return false;
+}
+
 bool
 sc_egl_init(struct sc_egl *egl) {
     egl->display = (EGLDisplay) SDL_EGL_GetCurrentDisplay();
@@ -22,8 +41,8 @@
         SDL_EGL_GetProcAddress("eglGetError");
     assert(egl->GetError);
 
-    egl->extensions = egl->QueryString(egl->display, EGL_EXTENSIONS);
-    if (!egl->extensions) {
+    const char *extensions = egl->QueryString(egl->display, EGL_EXTENSIONS);
+    if (!extensions) {
         LOGE("EGL error: Could not get EGL extensions");
         return false;
     }
@@ -32,8 +51,8 @@
     // so only resolve the entry points of advertised extensions
     egl->CreateImageKHR = NULL;
     egl->DestroyImageKHR = NULL;
-    if (sc_egl_has_extension(egl, "EGL_KHR_image_base")
-            || sc_egl_has_extension(egl, "EGL_KHR_image")) {
+    if (sc_egl_has_extension(extensions, "EGL_KHR_image_base")
+            || sc_egl_has_extension(extensions, "EGL_KHR_image")) {
         egl->CreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)
             SDL_EGL_GetProcAddress("eglCreateImageKHR");
         assert(egl->CreateImageKHR);
@@ -49,31 +68,57 @@
             SDL_GL_GetProcAddress("glEGLImageTargetTexture2DOES");
     }
 
+    // EGL_EXT_device_query is a client extension (not specific to a display)
+    const char *client_extensions =
+        egl->QueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+    egl->QueryDisplayAttribEXT = NULL;
+    egl->QueryDeviceStringEXT = NULL;
+    if (client_extensions && sc_egl_has_extension(client_extensions,
+                                                  "EGL_EXT_device_query")) {
+        egl->QueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC)
+            SDL_EGL_GetProcAddress("eglQueryDisplayAttribEXT");
+        assert(egl->QueryDisplayAttribEXT);
+
+        egl->QueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC)
+            SDL_EGL_GetProcAddress("eglQueryDeviceStringEXT");
+        assert(egl->QueryDeviceStringEXT);
+    }
+
     egl->has_dma_buf_import =
-        sc_egl_has_extension(egl, "EGL_EXT_image_dma_buf_import");
+        sc_egl_has_extension(extensions, "EGL_EXT_image_dma_buf_import");
     egl->has_dma_buf_import_modifiers =
-        sc_egl_has_extension(egl, "EGL_EXT_image_dma_buf_import_modifiers");
+        sc_egl_has_extension(extensions,
+                             "EGL_EXT_image_dma_buf_import_modifiers");
 
     return true;
 }
 
-bool
-sc_egl_has_extension(struct sc_egl *egl, const char *extension) {
-    assert(egl->extensions);
-    assert(extension);
-    assert(!strchr(extension, ' '));
+const char *
+sc_egl_get_drm_render_node(struct sc_egl *egl) {
+    if (!egl->QueryDisplayAttribEXT || !egl->QueryDeviceStringEXT) {
+        return NULL;
+    }
 
-    size_t len = strlen(extension);
-    const char *p = egl->extensions;
-    while ((p = strstr(p, extension))) {
-        if ((p == egl->extensions || p[-1] == ' ')
-                && (p[len] == '\0' || p[len] == ' ')) {
-            return true;
-        }
-        p += len;
+    EGLAttrib attrib;
+    if (!egl->QueryDisplayAttribEXT(egl->display, EGL_DEVICE_EXT, &attrib)) {
+        return NULL;
     }
 
-    return false;
+    EGLDeviceEXT device = (EGLDeviceEXT) attrib;
+    if (device == EGL_NO_DEVICE_EXT) {
+        return NULL;
+    }
+
+    const char *extensions = egl->QueryDeviceStringEXT(device, EGL_EXTENSIONS);
+    if (!extensions
+            || !sc_egl_has_extension(extensions,
+                                     "EGL_EXT_device_drm_render_node")) {
+        return NULL;
+    }
+
+    // May be NULL if the device has no render node
+    return egl->QueryDeviceStringEXT(device, EGL_DRM_RENDER_NODE_FILE_EXT);
 }
 
 EGLImageKHR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/egl.h 
new/scrcpy-5.0.1/app/src/egl.h
--- old/scrcpy-5.0/app/src/egl.h        2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/egl.h      2026-10-08 08:41:27.000000000 +0200
@@ -28,6 +28,10 @@
     PFNEGLCREATEIMAGEKHRPROC CreateImageKHR;
     PFNEGLDESTROYIMAGEKHRPROC DestroyImageKHR;
 
+    // EGL_EXT_device_query (NULL if unsupported)
+    PFNEGLQUERYDISPLAYATTRIBEXTPROC QueryDisplayAttribEXT;
+    PFNEGLQUERYDEVICESTRINGEXTPROC QueryDeviceStringEXT;
+
     // GL_OES_EGL_image, the OpenGL side of EGLImage (NULL if unsupported)
     PFNGLEGLIMAGETARGETTEXTURE2DOESPROC EGLImageTargetTexture2DOES;
 
@@ -54,8 +58,14 @@
 bool
 sc_egl_init(struct sc_egl *egl);
 
-bool
-sc_egl_has_extension(struct sc_egl *egl, const char *extension);
+/**
+ * Return the DRM render node of the device used by the EGL display (for 
example
+ * "/dev/dri/renderD128")
+ *
+ * The string is owned by EGL. Return NULL if it is unknown.
+ */
+const char *
+sc_egl_get_drm_render_node(struct sc_egl *egl);
 
 /**
  * Import a single-plane DMA-BUF as an EGLImage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/hwdec.c 
new/scrcpy-5.0.1/app/src/hwdec.c
--- old/scrcpy-5.0/app/src/hwdec.c      2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/hwdec.c    2026-10-08 08:41:27.000000000 +0200
@@ -73,7 +73,8 @@
 
 bool
 sc_hwdec_init(struct sc_hwdec *hwdec, enum AVHWDeviceType hw_type,
-              bool hw_forced, SDL_Renderer *renderer) {
+              const char *hw_device, bool hw_forced, SDL_Renderer *renderer) {
+    (void) hw_device; // only used by some hardware decoders
     (void) renderer; // only used by some hardware decoders
 
     hwdec->hw_type = hw_type;
@@ -85,8 +86,9 @@
             break;
 #ifdef HAVE_VAAPI
         case AV_HWDEVICE_TYPE_VAAPI: {
+            LOGD("VA-API device: %s", hw_device ? hw_device : "(default)");
             int ret = av_hwdevice_ctx_create(&hwdec->hw_device_ctx, hw_type,
-                                             NULL, NULL, 0);
+                                             hw_device, NULL, 0);
             if (ret < 0) {
                 LOGE("Could not create VA-API device: %s", av_err2str(ret));
                 return false;
@@ -200,9 +202,13 @@
         return false;
     }
 
-    // Some backends do not expose plain Baseline (only Constrained Baseline).
-    // Hardware supporting Main/High can still decode Baseline.
-    ctx->hwaccel_flags |= AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH;
+    if (ctx->codec_id == AV_CODEC_ID_H264) {
+        // Some backends do not expose plain Baseline (only Constrained
+        // Baseline). Hardware supporting Main/High can still decode Baseline.
+        // Do not set it for other codecs: for H.265, FFmpeg would select the
+        // Main10 D3D11VA decoder for a Main stream.
+        ctx->hwaccel_flags |= AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH;
+    }
 
     if (hwdec->hw_forced) {
         // By default, FFmpeg falls back to a software format if the hardware
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/hwdec.h 
new/scrcpy-5.0.1/app/src/hwdec.h
--- old/scrcpy-5.0/app/src/hwdec.h      2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/hwdec.h    2026-10-08 08:41:27.000000000 +0200
@@ -22,7 +22,7 @@
 
 bool
 sc_hwdec_init(struct sc_hwdec *hwdec, enum AVHWDeviceType hw_type,
-              bool hw_forced, SDL_Renderer *renderer);
+              const char *hw_device, bool hw_forced, SDL_Renderer *renderer);
 
 const AVCodec *
 sc_hwdec_find_decoder(struct sc_hwdec *hwdec, enum AVCodecID codec_id);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/interop/interop.h 
new/scrcpy-5.0.1/app/src/interop/interop.h
--- old/scrcpy-5.0/app/src/interop/interop.h    2026-10-05 12:26:14.000000000 
+0200
+++ new/scrcpy-5.0.1/app/src/interop/interop.h  2026-10-08 08:41:27.000000000 
+0200
@@ -18,6 +18,7 @@
     const char *name;
 
     enum AVHWDeviceType hw_type;
+    const char *hw_device;
     enum AVPixelFormat pix_fmt;
 
     SDL_Texture *texture;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/interop/interop_d3d11va.c 
new/scrcpy-5.0.1/app/src/interop/interop_d3d11va.c
--- old/scrcpy-5.0/app/src/interop/interop_d3d11va.c    2026-10-05 
12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/interop/interop_d3d11va.c  2026-10-08 
08:41:27.000000000 +0200
@@ -188,6 +188,7 @@
 
     d3d11va->interop.name = "d3d11va";
     d3d11va->interop.hw_type = AV_HWDEVICE_TYPE_D3D11VA;
+    d3d11va->interop.hw_device = NULL;
     d3d11va->interop.pix_fmt = AV_PIX_FMT_D3D11;
     d3d11va->interop.texture = NULL;
     d3d11va->interop.ops = &ops;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/interop/interop_software.c 
new/scrcpy-5.0.1/app/src/interop/interop_software.c
--- old/scrcpy-5.0/app/src/interop/interop_software.c   2026-10-05 
12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/interop/interop_software.c 2026-10-08 
08:41:27.000000000 +0200
@@ -170,6 +170,7 @@
 
     sw->interop.name = "software";
     sw->interop.hw_type = AV_HWDEVICE_TYPE_NONE;
+    sw->interop.hw_device = NULL;
     sw->interop.pix_fmt = AV_PIX_FMT_YUV420P;
     sw->interop.texture = NULL;
     sw->interop.ops = &ops;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/interop/interop_vaapi.c 
new/scrcpy-5.0.1/app/src/interop/interop_vaapi.c
--- old/scrcpy-5.0/app/src/interop/interop_vaapi.c      2026-10-05 
12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/interop/interop_vaapi.c    2026-10-08 
08:41:27.000000000 +0200
@@ -61,7 +61,8 @@
     return desc->nb_layers == 2
         && desc->layers[0].format == DRM_FORMAT_R8
         && desc->layers[0].nb_planes == 1
-        && desc->layers[1].format == DRM_FORMAT_GR88
+        && (desc->layers[1].format == DRM_FORMAT_GR88
+            || desc->layers[1].format == DRM_FORMAT_RG88)
         && desc->layers[1].nb_planes == 1;
 }
 
@@ -339,6 +340,8 @@
 
     vaapi->interop.name = "vaapi";
     vaapi->interop.hw_type = AV_HWDEVICE_TYPE_VAAPI;
+    // Decode on the GPU used by the renderer
+    vaapi->interop.hw_device = sc_egl_get_drm_render_node(&vaapi->egl);
     vaapi->interop.pix_fmt = AV_PIX_FMT_VAAPI;
     vaapi->interop.texture = NULL;
     vaapi->interop.ops = &ops;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/interop/interop_videotoolbox.c 
new/scrcpy-5.0.1/app/src/interop/interop_videotoolbox.c
--- old/scrcpy-5.0/app/src/interop/interop_videotoolbox.c       2026-10-05 
12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/interop/interop_videotoolbox.c     2026-10-08 
08:41:27.000000000 +0200
@@ -144,6 +144,7 @@
 
     vt->interop.name = "videotoolbox";
     vt->interop.hw_type = AV_HWDEVICE_TYPE_VIDEOTOOLBOX;
+    vt->interop.hw_device = NULL;
     vt->interop.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX;
     vt->interop.texture = NULL;
     vt->interop.ops = &ops;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/scrcpy.c 
new/scrcpy-5.0.1/app/src/scrcpy.c
--- old/scrcpy-5.0/app/src/scrcpy.c     2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/scrcpy.c   2026-10-08 08:41:27.000000000 +0200
@@ -338,14 +338,16 @@
 sc_init_video_hwdec(struct sc_hwdec *hwdec, enum sc_hwdec_mode mode,
                     struct sc_screen *screen) {
     enum AVHWDeviceType hw_type = AV_HWDEVICE_TYPE_NONE;
+    const char *hw_device = NULL;
     SDL_Renderer *renderer = NULL;
     if (screen) {
         hw_type = sc_screen_get_hw_type(screen);
+        hw_device = sc_screen_get_hw_device(screen);
         renderer = screen->renderer;
     }
     bool hw_forced = hw_type != AV_HWDEVICE_TYPE_NONE
                   && mode != SC_HWDEC_MODE_AUTO;
-    if (sc_hwdec_init(hwdec, hw_type, hw_forced, renderer)) {
+    if (sc_hwdec_init(hwdec, hw_type, hw_device, hw_forced, renderer)) {
         return true;
     }
 
@@ -368,7 +370,7 @@
     }
 
     // Initialize software decoder
-    return sc_hwdec_init(hwdec, AV_HWDEVICE_TYPE_NONE, false, NULL);
+    return sc_hwdec_init(hwdec, AV_HWDEVICE_TYPE_NONE, NULL, false, NULL);
 }
 
 enum scrcpy_exit_code
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/screen.h 
new/scrcpy-5.0.1/app/src/screen.h
--- old/scrcpy-5.0/app/src/screen.h     2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/screen.h   2026-10-08 08:41:27.000000000 +0200
@@ -216,6 +216,11 @@
     return sc_texture_get_hw_type(&screen->tex);
 }
 
+static inline const char *
+sc_screen_get_hw_device(struct sc_screen *screen) {
+    return sc_texture_get_hw_device(&screen->tex);
+}
+
 static inline bool
 sc_screen_disable_hwdec(struct sc_screen *screen) {
     return sc_texture_disable_hwdec(&screen->tex);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/sdl_hints.c 
new/scrcpy-5.0.1/app/src/sdl_hints.c
--- old/scrcpy-5.0/app/src/sdl_hints.c  2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/sdl_hints.c        2026-10-08 08:41:27.000000000 
+0200
@@ -44,15 +44,18 @@
         LOGW("Could not enable screensaver");
     }
 
+#ifdef HAVE_VAAPI
     // On X11, SDL creates the OpenGL contexts with GLX by default, but
     // importing hardware decoded frames (VA-API) requires EGL. Always use EGL,
-    // so that the rendering does not depend on the hardware decoding mode. It
-    // has no effect on other platforms.
+    // so that the rendering does not depend on the hardware decoding mode.
+    // Do not force it on other platforms: on Windows and macOS, it would try 
to
+    // load libEGL.dll.
     // The environment variable SDL_VIDEO_FORCE_EGL=0 takes priority to restore
     // GLX (hardware decoding is then unavailable).
     if (!SDL_SetHint(SDL_HINT_VIDEO_FORCE_EGL, "1")) {
         LOGW("Could not force EGL");
     }
+#endif
 
     // On Windows, SDL creates the Direct3D 11 device single-threaded by
     // default, but hardware decoding (D3D11VA) uses it from the decoder 
thread.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/texture.c 
new/scrcpy-5.0.1/app/src/texture.c
--- old/scrcpy-5.0/app/src/texture.c    2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/texture.c  2026-10-08 08:41:27.000000000 +0200
@@ -72,6 +72,11 @@
     return tex->interop->hw_type;
 }
 
+const char *
+sc_texture_get_hw_device(struct sc_texture *tex) {
+    return tex->interop->hw_device;
+}
+
 struct sc_size
 sc_texture_get_frame_size(struct sc_texture *tex) {
     assert(tex->interop && tex->interop->texture);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/app/src/texture.h 
new/scrcpy-5.0.1/app/src/texture.h
--- old/scrcpy-5.0/app/src/texture.h    2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/app/src/texture.h  2026-10-08 08:41:27.000000000 +0200
@@ -46,6 +46,9 @@
 enum AVHWDeviceType
 sc_texture_get_hw_type(struct sc_texture *tex);
 
+const char *
+sc_texture_get_hw_device(struct sc_texture *tex);
+
 bool
 sc_texture_disable_hwdec(struct sc_texture *tex);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/doc/build.md new/scrcpy-5.0.1/doc/build.md
--- old/scrcpy-5.0/doc/build.md 2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/doc/build.md       2026-10-08 08:41:27.000000000 +0200
@@ -237,10 +237,10 @@
 
 #### Option 2: Use prebuilt server
 
- - [`scrcpy-server-v5.0`][direct-scrcpy-server]  
-   <sub>SHA-256: 
`26cbc9ad0aced6c2282455bef4fb43462605c1f8758c74b4ab1dbf818c229daa`</sub>
+ - [`scrcpy-server-v5.0.1`][direct-scrcpy-server]  
+   <sub>SHA-256: 
`764eb6f79811d5211fe9df341120882ba9994c7a61b897d7bf3fb662e53bc536`</sub>
 
-[direct-scrcpy-server]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-server-v5.0
+[direct-scrcpy-server]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-server-v5.0.1
 
 Download the prebuilt server somewhere, and specify its path during the Meson
 configuration:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/doc/linux.md new/scrcpy-5.0.1/doc/linux.md
--- old/scrcpy-5.0/doc/linux.md 2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/doc/linux.md       2026-10-08 08:41:27.000000000 +0200
@@ -6,11 +6,11 @@
 
 Download a static build of the [latest release]:
 
- - [`scrcpy-linux-x86_64-v5.0.tar.gz`][direct-linux-x86_64] (x86_64)  
-   <sub>SHA-256: 
`f052ad9eb981879e8c5f066c5ef122b39b6c9853b383d6497219030e6549baed`</sub>
+ - [`scrcpy-linux-x86_64-v5.0.1.tar.gz`][direct-linux-x86_64] (x86_64)  
+   <sub>SHA-256: 
`9f969d30cc574816077edecda65719c1c70b0aee1df1ba5fa00779ac07b8fd6e`</sub>
 
 [latest release]: https://github.com/Genymobile/scrcpy/releases/latest
-[direct-linux-x86_64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-linux-x86_64-v5.0.tar.gz
+[direct-linux-x86_64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-linux-x86_64-v5.0.1.tar.gz
 
 and extract it.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/doc/macos.md new/scrcpy-5.0.1/doc/macos.md
--- old/scrcpy-5.0/doc/macos.md 2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/doc/macos.md       2026-10-08 08:41:27.000000000 +0200
@@ -6,14 +6,14 @@
 
 Download a static build of the [latest release]:
 
- - [`scrcpy-macos-aarch64-v5.0.tar.gz`][direct-macos-aarch64] (aarch64)  
-   <sub>SHA-256: 
`7cb4e41c859b05b36e89dc9be6c353cc5980c00d7f7f6a763b5b355551b82e9c`</sub>
- - [`scrcpy-macos-x86_64-v5.0.tar.gz`][direct-macos-x86_64] (x86_64)  
-   <sub>SHA-256: 
`dacb995c8eb42528cb96b2da2a2e3110fe5c82281378e6044fc7cccf48a7c39a`</sub>
+ - [`scrcpy-macos-aarch64-v5.0.1.tar.gz`][direct-macos-aarch64] (aarch64)  
+   <sub>SHA-256: 
`33611e51977a8289e2e124b220f727895181ef2eb9060e0987a4dc2db9cf0d6b`</sub>
+ - [`scrcpy-macos-x86_64-v5.0.1.tar.gz`][direct-macos-x86_64] (x86_64)  
+   <sub>SHA-256: 
`31a5467a9e907f162b093267cbbab1276b15c6e709c2ea8159566a8d165beb50`</sub>
 
 [latest release]: https://github.com/Genymobile/scrcpy/releases/latest
-[direct-macos-aarch64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-macos-aarch64-v5.0.tar.gz
-[direct-macos-x86_64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-macos-x86_64-v5.0.tar.gz
+[direct-macos-aarch64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-macos-aarch64-v5.0.1.tar.gz
+[direct-macos-x86_64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-macos-x86_64-v5.0.1.tar.gz
 
 and extract it.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/doc/windows.md 
new/scrcpy-5.0.1/doc/windows.md
--- old/scrcpy-5.0/doc/windows.md       2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/doc/windows.md     2026-10-08 08:41:27.000000000 +0200
@@ -6,17 +6,17 @@
 
 Download the [latest release]:
 
- - [`scrcpy-win64-v5.0.zip`][direct-win64] (64-bit)  
-   <sub>SHA-256: 
`44c10d9e82f20ea67227d14d37bf9fbe3603117c5736df3f514544a02ba20a73`</sub>
- - [`scrcpy-win32-v5.0.zip`][direct-win32] (32-bit)  
-   <sub>SHA-256: 
`31413dd59a80cb76e7747ef91b4994934b546c8860e8e7976046c612a50e5cc3`</sub>
- - [`scrcpy-winarm64-v5.0.zip`][direct-win32] (ARM 64-bit)  
-   <sub>SHA-256: 
`afc1db17b216f91470d2c8f41ea786ae18ab1cb2bc2324bc05ec3d7685aa6054`</sub>
+ - [`scrcpy-win64-v5.0.1.zip`][direct-win64] (64-bit)  
+   <sub>SHA-256: 
`b12a2c4ee8be317422451fc7dcf8ee20a71b5ea7ef9ad73ddd825a25316227a5`</sub>
+ - [`scrcpy-win32-v5.0.1.zip`][direct-win32] (32-bit)  
+   <sub>SHA-256: 
`0cb65ebf1bce892fa4d1502d699af0c7a1a7f24d7febcb9ef72894e3f23fc2ad`</sub>
+ - [`scrcpy-winarm64-v5.0.1.zip`][direct-win32] (ARM 64-bit)  
+   <sub>SHA-256: 
`16c3fc2068df64946f670e3504b4752073ebae47a416a45b46e79a5ab19c689b`</sub>
 
 [latest release]: https://github.com/Genymobile/scrcpy/releases/latest
-[direct-win64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-win64-v5.0.zip
-[direct-win32]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-win32-v5.0.zip
-[direct-winarm64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-winarm64-v5.0.zip
+[direct-win64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-win64-v5.0.1.zip
+[direct-win32]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-win32-v5.0.1.zip
+[direct-winarm64]: 
https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-winarm64-v5.0.1.zip
 
 and extract it.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/install_release.sh 
new/scrcpy-5.0.1/install_release.sh
--- old/scrcpy-5.0/install_release.sh   2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/install_release.sh 2026-10-08 08:41:27.000000000 +0200
@@ -2,8 +2,8 @@
 set -e
 
 BUILDDIR=build-auto
-PREBUILT_SERVER_URL=https://github.com/Genymobile/scrcpy/releases/download/v5.0/scrcpy-server-v5.0
-PREBUILT_SERVER_SHA256=26cbc9ad0aced6c2282455bef4fb43462605c1f8758c74b4ab1dbf818c229daa
+PREBUILT_SERVER_URL=https://github.com/Genymobile/scrcpy/releases/download/v5.0.1/scrcpy-server-v5.0.1
+PREBUILT_SERVER_SHA256=764eb6f79811d5211fe9df341120882ba9994c7a61b897d7bf3fb662e53bc536
 
 echo "[scrcpy] Downloading prebuilt server..."
 wget "$PREBUILT_SERVER_URL" -O scrcpy-server
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/meson.build new/scrcpy-5.0.1/meson.build
--- old/scrcpy-5.0/meson.build  2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/meson.build        2026-10-08 08:41:27.000000000 +0200
@@ -1,5 +1,5 @@
 project('scrcpy', 'c',
-        version: '5.0',
+        version: '5.0.1',
         meson_version: '>= 0.49',
         default_options: [
             'c_std=c11',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/server/build.gradle 
new/scrcpy-5.0.1/server/build.gradle
--- old/scrcpy-5.0/server/build.gradle  2026-10-05 12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/server/build.gradle        2026-10-08 08:41:27.000000000 
+0200
@@ -7,8 +7,8 @@
         applicationId = "com.genymobile.scrcpy"
         minSdkVersion 21
         targetSdkVersion 36
-        versionCode 50000
-        versionName "5.0"
+        versionCode 50001
+        versionName "5.0.1"
         testInstrumentationRunner = 
"android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scrcpy-5.0/server/build_without_gradle.sh 
new/scrcpy-5.0.1/server/build_without_gradle.sh
--- old/scrcpy-5.0/server/build_without_gradle.sh       2026-10-05 
12:26:14.000000000 +0200
+++ new/scrcpy-5.0.1/server/build_without_gradle.sh     2026-10-08 
08:41:27.000000000 +0200
@@ -12,7 +12,7 @@
 set -e
 
 SCRCPY_DEBUG=false
-SCRCPY_VERSION_NAME=5.0
+SCRCPY_VERSION_NAME=5.0.1
 
 PLATFORM=${ANDROID_PLATFORM:-36}
 BUILD_TOOLS=${ANDROID_BUILD_TOOLS:-36.0.0}

Reply via email to