Jacek Caban : widl: Support async interfaces in headers generation.
Alexandre Julliard
julliard at winehq.org
Wed Nov 7 14:47:32 CST 2018
Module: wine
Branch: master
Commit: 069d7b02b7ef2e70cfc66010728293e51bee806a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=069d7b02b7ef2e70cfc66010728293e51bee806a
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Nov 7 16:14:06 2018 +0100
widl: Support async interfaces in headers generation.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/widl/header.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c
index 92bd391..c4b26d3 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -1611,8 +1611,13 @@ static void write_forward_decls(FILE *header, const statement_list_t *stmts)
case STMT_TYPE:
if (type_get_type(stmt->u.type) == TYPE_INTERFACE)
{
- if (is_object(stmt->u.type) || is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE))
- write_forward(header, stmt->u.type);
+ type_t *iface = stmt->u.type;
+ if (is_object(iface) || is_attr(iface->attrs, ATTR_DISPINTERFACE))
+ {
+ write_forward(header, iface);
+ if (iface->details.iface->async_iface)
+ write_forward(header, iface->details.iface->async_iface);
+ }
}
else if (type_get_type(stmt->u.type) == TYPE_COCLASS)
write_coclass_forward(header, stmt->u.type);
@@ -1647,12 +1652,18 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
if (type_get_type(stmt->u.type) == TYPE_INTERFACE)
{
type_t *iface = stmt->u.type;
+ type_t *async_iface = iface->details.iface->async_iface;
if (is_object(iface)) is_object_interface++;
if (is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE) || is_object(stmt->u.type))
{
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);
+ if (async_iface)
+ {
+ write_com_interface_start(header, async_iface);
+ write_com_interface_end(header, async_iface);
+ }
}
else
{
More information about the wine-cvs
mailing list