From e6eff172838b7899e6d0fd81375e8f683c8f8e96 Mon Sep 17 00:00:00 2001 From: Grzegorz Sikorski Date: Sat, 19 Oct 2024 21:42:49 +0200 Subject: [PATCH] Fix nested object weak references for lists --- generator/vulkan.template.py | 8 ++++++++ vulkan/__init__.py | 2 +- vulkan/_vulkan.py | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/generator/vulkan.template.py b/generator/vulkan.template.py index 84e4881..7196abc 100644 --- a/generator/vulkan.template.py +++ b/generator/vulkan.template.py @@ -82,6 +82,14 @@ def _cast_ptr2(x, _type): else: ret = ffi.new(_type.item.cname+'[]', x) + if isinstance(x, list): + iterable_references = [] + for item in x: + if item in _weakkey_dict: + iterable_references.append(_weakkey_dict[item]) + if iterable_references: + _weakkey_dict[ret] = iterable_references + return ret, ret return ffi.cast(_type, x), x diff --git a/vulkan/__init__.py b/vulkan/__init__.py index a138e8a..fca5dad 100644 --- a/vulkan/__init__.py +++ b/vulkan/__init__.py @@ -1,3 +1,3 @@ from vulkan._vulkan import * # noqa -__version__ = '1.3.275.1' +__version__ = '1.3.275.2' diff --git a/vulkan/_vulkan.py b/vulkan/_vulkan.py index 4a2c542..7a092c4 100644 --- a/vulkan/_vulkan.py +++ b/vulkan/_vulkan.py @@ -82,6 +82,14 @@ def _cast_ptr2(x, _type): else: ret = ffi.new(_type.item.cname+'[]', x) + if isinstance(x, list): + iterable_references = [] + for item in x: + if item in _weakkey_dict: + iterable_references.append(_weakkey_dict[item]) + if iterable_references: + _weakkey_dict[ret] = iterable_references + return ret, ret return ffi.cast(_type, x), x