From 04ac2fec303c8ad14a6a86a9465a0b77134dd626 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 25 Apr 2013 16:01:48 +0100 Subject: [PATCH] d3d9trace: Fix wrapping of IDirect3DSwapChain9Ex pointers. PIX will complain without this. --- wrappers/d3d9trace.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/wrappers/d3d9trace.py b/wrappers/d3d9trace.py index f3236e7..df401da 100644 --- a/wrappers/d3d9trace.py +++ b/wrappers/d3d9trace.py @@ -25,8 +25,8 @@ from dlltrace import DllTracer -from specs.stdapi import API -from specs.d3d9 import d3d9, D3DSHADER9 +from specs.stdapi import API, Pointer, ObjPointer +from specs.d3d9 import d3d9, D3DSHADER9, IDirect3DSwapChain9Ex import specs.d3d9dxva2 @@ -41,6 +41,16 @@ class D3D9Tracer(DllTracer): DllTracer.serializeArgValue(self, function, arg) + def wrapArg(self, function, arg): + # Correctly handle the wrapping of IDirect3DSwapChain9Ex objects + if function.name in ('GetSwapChain', 'CreateAdditionalSwapChain') \ + and self.interface.name == 'IDirect3DDevice9Ex' \ + and arg.name == 'pSwapChain': + self.wrapValue(Pointer(ObjPointer(IDirect3DSwapChain9Ex)), '((IDirect3DSwapChain9Ex**)pSwapChain)') + return + + DllTracer.wrapArg(self, function, arg) + def enumWrapperInterfaceVariables(self, interface): variables = DllTracer.enumWrapperInterfaceVariables(self, interface) -- 2.43.0