mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
vulkan/xcb: display->windows is a list of allocated GWeakRef
Don't access them as plain GstVulkanWindow objects.
This commit is contained in:
parent
837cdd598a
commit
e83df1759d
1 changed files with 18 additions and 4 deletions
|
@ -33,9 +33,22 @@
|
||||||
#include "xcb_event_source.h"
|
#include "xcb_event_source.h"
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
_compare_xcb_window (GstVulkanWindowXCB * window_xcb, xcb_window_t * window_id)
|
_compare_xcb_window (GWeakRef * ref, xcb_window_t * window_id)
|
||||||
{
|
{
|
||||||
return window_xcb->win_id - *window_id;
|
GstVulkanWindowXCB *window_xcb;
|
||||||
|
gint ret;
|
||||||
|
|
||||||
|
window_xcb = g_weak_ref_get (ref);
|
||||||
|
if (!window_xcb)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GST_IS_VULKAN_WINDOW_XCB (window_xcb), -1);
|
||||||
|
g_return_val_if_fail (window_id != 0, -1);
|
||||||
|
|
||||||
|
ret = window_xcb->win_id - *window_id;
|
||||||
|
gst_object_unref (window_xcb);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstVulkanWindowXCB *
|
static GstVulkanWindowXCB *
|
||||||
|
@ -52,8 +65,9 @@ _find_window_from_xcb_window (GstVulkanDisplayXCB * display_xcb,
|
||||||
GST_OBJECT_LOCK (display);
|
GST_OBJECT_LOCK (display);
|
||||||
l = g_list_find_custom (display->windows, &window_id,
|
l = g_list_find_custom (display->windows, &window_id,
|
||||||
(GCompareFunc) _compare_xcb_window);
|
(GCompareFunc) _compare_xcb_window);
|
||||||
if (l)
|
if (l) {
|
||||||
ret = gst_object_ref (l->data);
|
ret = g_weak_ref_get (l->data);
|
||||||
|
}
|
||||||
GST_OBJECT_UNLOCK (display);
|
GST_OBJECT_UNLOCK (display);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue