Module: wine Branch: master Commit: d4b162509f7d1408f933eabde3956fc8df3f86cd URL: https://source.winehq.org/git/wine.git/?a=commit;h=d4b162509f7d1408f933eabde...
Author: Georg Lehmann dadschoorse@gmail.com Date: Tue Sep 22 16:31:49 2020 +0200
winevulkan: Forward declare required structs for function pointer.
Signed-off-by: Georg Lehmann dadschoorse@gmail.com Signed-off-by: Liam Middlebrook lmiddlebrook@nvidia.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winevulkan/make_vulkan | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 070d112e6e..2cddb161d6 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -805,11 +805,12 @@ class VkFunction(object):
class VkFunctionPointer(object): - def __init__(self, _type, name, members): + def __init__(self, _type, name, members, forward_decls): self.name = name self.members = members self.type = _type self.required = False + self.forward_decls = forward_decls
@staticmethod def from_xml(funcpointer): @@ -846,10 +847,19 @@ class VkFunctionPointer(object):
_type = funcpointer.text name = funcpointer.find("name").text - return VkFunctionPointer(_type, name, members) + if "requires" in funcpointer.attrib: + forward_decls = funcpointer.attrib.get("requires").split(",") + else: + forward_decls = [] + return VkFunctionPointer(_type, name, members, forward_decls)
def definition(self): - text = "{0} {1})(\n".format(self.type, self.name) + text = "" + # forward declare required structs + for decl in self.forward_decls: + text += "typedef struct {0} {0};\n".format(decl) + + text += "{0} {1})(\n".format(self.type, self.name)
first = True if len(self.members) > 0: