[PATCH 1/2] widl: don't use local methods when writing async interfaces
Steve Lhomme
robux4 at ycbcr.xyz
Wed Dec 16 03:14:27 CST 2020
The same entries can have a different call_as between the synchronous and
asynchronous interfaces and shouldn't be mixed up.
---
tools/widl/header.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c
index 223ab5c5ca9..43be8d74cbe 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -1535,7 +1535,7 @@ static void write_com_interface_start(FILE *header, const type_t *iface)
fprintf(header,"#define __%s_%sINTERFACE_DEFINED__\n\n", iface->c_name, dispinterface ? "DISP" : "");
}
-static void write_com_interface_end(FILE *header, type_t *iface)
+static void write_com_interface_end(FILE *header, type_t *iface, int as_async)
{
int dispinterface = is_attr(iface->attrs, ATTR_DISPINTERFACE);
const UUID *uuid = get_attrp(iface->attrs, ATTR_UUID);
@@ -1614,7 +1614,8 @@ static void write_com_interface_end(FILE *header, type_t *iface)
if (!dispinterface && !winrt_mode)
{
write_method_proto(header, iface);
- write_locals(header, iface, FALSE);
+ if (!as_async)
+ write_locals(header, iface, FALSE);
fprintf(header, "\n");
}
fprintf(header, "#endif /* __%s_%sINTERFACE_DEFINED__ */\n", iface->c_name, dispinterface ? "DISP" : "");
@@ -1808,11 +1809,11 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
{
write_com_interface_start(header, iface);
write_header_stmts(header, type_iface_get_stmts(iface), stmt->u.type, TRUE);
- write_com_interface_end(header, iface);
+ write_com_interface_end(header, iface, FALSE);
if (async_iface)
{
write_com_interface_start(header, async_iface);
- write_com_interface_end(header, async_iface);
+ write_com_interface_end(header, async_iface, TRUE);
}
}
else
--
2.29.2
More information about the wine-devel
mailing list