summaryrefslogtreecommitdiff
path: root/ext/vulkan/vkdeviceprovider.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/vulkan/vkdeviceprovider.c')
-rw-r--r--ext/vulkan/vkdeviceprovider.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/vulkan/vkdeviceprovider.c b/ext/vulkan/vkdeviceprovider.c
index 7432e0836..1f8888d99 100644
--- a/ext/vulkan/vkdeviceprovider.c
+++ b/ext/vulkan/vkdeviceprovider.c
@@ -397,17 +397,20 @@ device_context_probe (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
device = g_object_dup_data (G_OBJECT (physical),
"vkdeviceprovider.physical.device", (GDuplicateFunc) _ref_if_set,
NULL);
+ GST_OBJECT_UNLOCK (physical);
if (!device || !GST_IS_VULKAN_DEVICE (device)) {
GWeakRef *ref = g_new0 (GWeakRef, 1);
if (device)
gst_object_unref (device);
device = gst_vulkan_device_new (physical);
g_weak_ref_init (ref, device);
+
+ GST_OBJECT_LOCK (physical);
g_object_set_data_full (G_OBJECT (physical),
"vkdeviceprovider.physical.device", ref,
(GDestroyNotify) _ref_free);
+ GST_OBJECT_UNLOCK (physical);
}
- GST_OBJECT_UNLOCK (physical);
if (gst_vulkan_device_handle_context_query (element, query, device)) {
ret = GST_PAD_PROBE_HANDLED;