Get raytracing extension to build
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index a59478a..42eb4c8 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -790,6 +790,7 @@
# Structs at first level will have an object
if self.struct_contains_object(member.type) == True:
struct_info = self.struct_member_dict[member.type]
+ ispointer = '*' in member.cdecl;
# Struct Array
if member.len is not None:
# Update struct prefix
@@ -809,7 +810,7 @@
indent = self.decIndent(indent)
pre_code += '%s }\n' % indent
# Single Struct
- else:
+ elif ispointer:
# Update struct prefix
new_prefix = '%s%s->' % (prefix, member.name)
# Declare safe_VarType for struct
@@ -822,6 +823,15 @@
post_code += tmp_post
indent = self.decIndent(indent)
pre_code += '%s }\n' % indent
+ else:
+ # Update struct prefix
+ new_prefix = '%s%s.' % (prefix, member.name)
+ # Declare safe_VarType for struct
+ # Process sub-structs in this struct
+ (tmp_decl, tmp_pre, tmp_post) = self.validate_objects(struct_info, indent, new_prefix, array_index, create_func, destroy_func, destroy_array, disp_name, member.type, False)
+ decls += tmp_decl
+ pre_code += tmp_pre
+ post_code += tmp_post
return decls, pre_code, post_code
#
# For a particular API, generate the object handling code
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index 2088498..431a664 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -688,6 +688,7 @@
# Structs at first level will have an NDO, OR, we need a safe_struct for the pnext chain
if self.struct_contains_ndo(member.type) == True or process_pnext:
struct_info = self.struct_member_dict[member.type]
+ ispointer = '*' in member.cdecl;
# Struct Array
if member.len is not None:
# Update struct prefix
@@ -720,7 +721,7 @@
if first_level_param == True:
post_code += self.cleanUpLocalDeclarations(indent, prefix, member.name, member.len, index, process_pnext)
# Single Struct
- else:
+ elif ispointer:
# Update struct prefix
if first_level_param == True:
new_prefix = 'local_%s->' % member.name
@@ -743,6 +744,25 @@
pre_code += '%s }\n' % indent
if first_level_param == True:
post_code += self.cleanUpLocalDeclarations(indent, prefix, member.name, member.len, index, process_pnext)
+ else:
+ # Update struct prefix
+ if first_level_param == True:
+ new_prefix = 'local_%s.' % member.name
+ decls += '%ssafe_%s *local_%s%s = NULL;\n' % (indent, member.type, prefix, member.name)
+ else:
+ new_prefix = '%s%s.' % (prefix, member.name)
+ # Declare safe_VarType for struct
+ if first_level_param == True:
+ pre_code += '%s local_%s%s = new safe_%s(%s);\n' % (indent, prefix, member.name, member.type, member.name)
+ # Process sub-structs in this struct
+ (tmp_decl, tmp_pre, tmp_post) = self.uniquify_members(struct_info, indent, new_prefix, array_index, create_func, destroy_func, destroy_array, False)
+ decls += tmp_decl
+ pre_code += tmp_pre
+ post_code += tmp_post
+ if process_pnext:
+ pre_code += '%s local_%s%s.pNext = CreateUnwrappedExtensionStructs(local_%s%s.pNext);\n' % (indent, prefix, member.name, prefix, member.name)
+ if first_level_param == True:
+ post_code += self.cleanUpLocalDeclarations(indent, prefix, member.name, member.len, index, process_pnext)
return decls, pre_code, post_code
#
# For a particular API, generate the non-dispatchable-object wrapping/unwrapping code