Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package QMPlay2 for openSUSE:Factory checked 
in at 2021-11-29 17:28:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/QMPlay2 (Old)
 and      /work/SRC/openSUSE:Factory/.QMPlay2.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "QMPlay2"

Mon Nov 29 17:28:37 2021 rev:59 rq:934526 version:21.06.07

Changes:
--------
--- /work/SRC/openSUSE:Factory/QMPlay2/QMPlay2.changes  2021-10-13 
18:11:19.959767988 +0200
+++ /work/SRC/openSUSE:Factory/.QMPlay2.new.31177/QMPlay2.changes       
2021-12-02 02:09:41.863679468 +0100
@@ -1,0 +2,5 @@
+Mon Nov 29 10:08:48 UTC 2021 - Simon Vogl <[email protected]>
+
+- Added 0001-fix-vulkan-instance-initialization.patch to prevent an 
initialization error of QMPlay2's submodule QmVk when Tumbleweed updates vulkan 
to version 1.2.199 or higher
+
+-------------------------------------------------------------------

New:
----
  0001-fix-vulkan-instance-initialization.patch

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

Other differences:
------------------
++++++ QMPlay2.spec ++++++
--- /var/tmp/diff_new_pack.Ujms0G/_old  2021-12-02 02:09:42.303678126 +0100
+++ /var/tmp/diff_new_pack.Ujms0G/_new  2021-12-02 02:09:42.307678114 +0100
@@ -30,6 +30,8 @@
 Patch1:         0001-add-opensuse-customizations.patch
 # PATCH-FIX-UPSTREAM
 Patch2:         0001-switch-to-yt-dlp.patch
+# PATCH-FIX-UPSTREAM
+Patch3:         0001-fix-vulkan-instance-initialization.patch
 BuildRequires:  cmake >= 3.16
 BuildRequires:  gcc-c++
 # Use gcc 10 for openSUSE Leap 15.3+ and SLE15SP3+

++++++ 0001-fix-vulkan-instance-initialization.patch ++++++
>From d9fee9a8f6541ecd30e1a3411b2d88856f912c93 Mon 29 11 10:08:48 2021
From: Simon Vogl <[email protected]>
Date: Mon, 29 Nov 2021 10:08:48 UTC
Subject: [PATCH] Fix QmVk instance initialization

This patch is required to fix an initialization error in QMPlay2's submodule 
QmVk with vulkan versions >= 1.2.199.

--- a/src/qmvk/AbstractInstance.cpp
+++ b/src/qmvk/AbstractInstance.cpp
@@ -23,30 +23,34 @@ vk::DispatchLoaderDynamic vk::defaultDispatchLoaderDynamic;
 
 namespace QmVk {
 
-static unique_ptr<vk::DynamicLoader> g_dyld;
-
 void AbstractInstance::init(PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr)
 {
-    if (vkGetInstanceProcAddr)
-    {
-        vk::defaultDispatchLoaderDynamic.init(*this, vkGetInstanceProcAddr);
-        return;
-    }
-
-    try
-    {
-        g_dyld = make_unique<vk::DynamicLoader>();
-    }
-    catch (const runtime_error &e)
+    if (!vkGetInstanceProcAddr)
     {
-        throw vk::InitializationFailedError(e.what());
+        static unique_ptr<vk::DynamicLoader> dyld;
+        static mutex dyldMutex;
+
+        lock_guard<mutex> locker(dyldMutex);
+        if (!dyld)
+        {
+            try
+            {
+                dyld = make_unique<vk::DynamicLoader>();
+            }
+            catch (const runtime_error &e)
+            {
+                throw vk::InitializationFailedError(e.what());
+            }
+        }
+
+        vkGetInstanceProcAddr = 
dyld->getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
+        if (!vkGetInstanceProcAddr)
+            throw vk::InitializationFailedError("Unable to get 
\"vkGetInstanceProcAddr\"");
     }
-
-    vkGetInstanceProcAddr = 
g_dyld->getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
-    if (!vkGetInstanceProcAddr)
-        throw vk::InitializationFailedError("Unable to get 
\"vkGetInstanceProcAddr\"");
-
-    vk::defaultDispatchLoaderDynamic.init(vkGetInstanceProcAddr);
+    if (*this)
+        vk::defaultDispatchLoaderDynamic.init(*this, vkGetInstanceProcAddr);
+    else
+        vk::defaultDispatchLoaderDynamic.init(vkGetInstanceProcAddr);
 }
 
 vector<shared_ptr<PhysicalDevice>> 
AbstractInstance::enumeratePhysicalDevices(bool compatibleOnly)

Reply via email to