[PATCH] widl: Only generate Proxy Stubs when functions have the call_as attribute
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Mon Jul 10 21:30:15 CDT 2017
Fixes: https://bugs.winehq.org/show_bug.cgi?id=43302
v2: Merge two matches together.
v3: Fix warning in windowscodecs
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/windowscodecs/tests/converter.c | 3 +++
include/unknwn.idl | 10 ++++++++++
tools/widl/header.c | 2 +-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c
index 9da82f1..fba7fc7 100644
--- a/dlls/windowscodecs/tests/converter.c
+++ b/dlls/windowscodecs/tests/converter.c
@@ -45,6 +45,9 @@ typedef struct BitmapTestSrc {
const bitmap_data *data;
} BitmapTestSrc;
+extern HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_WriteSource_Proxy(IWICBitmapFrameEncode* This,
+ IWICBitmapSource *pIBitmapSource, WICRect *prc);
+
static BOOL near_equal(float a, float b)
{
return fabsf(a - b) < 0.001;
diff --git a/include/unknwn.idl b/include/unknwn.idl
index 78a2d9d..7856a7f 100644
--- a/include/unknwn.idl
+++ b/include/unknwn.idl
@@ -46,6 +46,16 @@ interface IUnknown
ULONG Release();
}
+cpp_quote("HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown* This, REFIID riid, void **ppvObject);")
+cpp_quote("void __RPC_STUB IUnknown_QueryInterface_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
+cpp_quote(" PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
+cpp_quote("ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown* This);")
+cpp_quote("void __RPC_STUB IUnknown_AddRef_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
+cpp_quote(" PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
+cpp_quote("ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown* This);")
+cpp_quote("void __RPC_STUB IUnknown_Release_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
+cpp_quote(" PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
+
cpp_quote("#ifdef SAVE_WIDL_C_INLINE_WRAPPERS")
cpp_quote("#define WIDL_C_INLINE_WRAPPERS")
cpp_quote("#endif")
diff --git a/tools/widl/header.c b/tools/widl/header.c
index 7b97158..e48b488 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -1172,7 +1172,7 @@ static void write_method_proto(FILE *header, const type_t *iface)
{
const var_t *func = stmt->u.var;
- if (!is_local(func->attrs)) {
+ if (is_callas(func->attrs)) {
const char *callconv = get_attrp(func->type->attrs, ATTR_CALLCONV);
if (!callconv) callconv = "STDMETHODCALLTYPE";
/* proxy prototype */
--
1.9.1
More information about the wine-patches
mailing list