mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against c1824d578ac514d29e79a5a00d6759f11dbe4813.
This commit is contained in:
parent
fd3372e71c
commit
73480ec459
@ -1,4 +1,4 @@
|
||||
From 389c087267b8d9d3892c68b52ffa965df38730db Mon Sep 17 00:00:00 2001
|
||||
From ca61f3487605168b0f68f9c3d64bec15f5ecef1f Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Mon, 16 Mar 2020 12:09:39 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement decoder MFT on gstreamer.
|
||||
@ -28,7 +28,7 @@ index 4f6b428f067..81c670c17e4 100644
|
||||
pin.c \
|
||||
qualitycontrol.c \
|
||||
diff --git a/dlls/winegstreamer/gst_cbs.c b/dlls/winegstreamer/gst_cbs.c
|
||||
index b9effe73a5b..4afefe91aa8 100644
|
||||
index 6c5877ce785..cf410b8934d 100644
|
||||
--- a/dlls/winegstreamer/gst_cbs.c
|
||||
+++ b/dlls/winegstreamer/gst_cbs.c
|
||||
@@ -51,6 +51,8 @@ static void CALLBACK perform_cb(TP_CALLBACK_INSTANCE *instance, void *user)
|
||||
@ -40,7 +40,7 @@ index b9effe73a5b..4afefe91aa8 100644
|
||||
|
||||
pthread_mutex_lock(&cbdata->lock);
|
||||
cbdata->finished = 1;
|
||||
@@ -363,3 +365,66 @@ void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user)
|
||||
@@ -301,3 +303,66 @@ void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user)
|
||||
|
||||
call_cb(&cbdata);
|
||||
}
|
||||
@ -108,10 +108,10 @@ index b9effe73a5b..4afefe91aa8 100644
|
||||
+ return cbdata.u.new_sample_data.ret;
|
||||
+}
|
||||
diff --git a/dlls/winegstreamer/gst_cbs.h b/dlls/winegstreamer/gst_cbs.h
|
||||
index 0e262c12db8..98dff43ba9b 100644
|
||||
index f063a0a2a7b..7737ae589d2 100644
|
||||
--- a/dlls/winegstreamer/gst_cbs.h
|
||||
+++ b/dlls/winegstreamer/gst_cbs.h
|
||||
@@ -50,6 +50,12 @@ enum CB_TYPE {
|
||||
@@ -45,6 +45,12 @@ enum CB_TYPE {
|
||||
MF_SRC_STREAM_REMOVED,
|
||||
MF_SRC_NO_MORE_PADS,
|
||||
MEDIA_SOURCE_MAX,
|
||||
@ -124,7 +124,7 @@ index 0e262c12db8..98dff43ba9b 100644
|
||||
};
|
||||
|
||||
struct cb_data {
|
||||
@@ -120,6 +126,17 @@ struct cb_data {
|
||||
@@ -103,6 +109,17 @@ struct cb_data {
|
||||
GstQuery *query;
|
||||
gboolean ret;
|
||||
} query_sink_data;
|
||||
@ -142,15 +142,15 @@ index 0e262c12db8..98dff43ba9b 100644
|
||||
} u;
|
||||
|
||||
int finished;
|
||||
@@ -131,6 +148,7 @@ struct cb_data {
|
||||
@@ -114,6 +131,7 @@ struct cb_data {
|
||||
void mark_wine_thread(void) DECLSPEC_HIDDEN;
|
||||
void perform_cb_gstdemux(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
void perform_cb_media_source(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
+void perform_cb_mf_decode(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
|
||||
void existing_new_pad_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
gboolean query_function_wrapper(GstPad *pad, GstObject *parent, GstQuery *query) DECLSPEC_HIDDEN;
|
||||
@@ -152,5 +170,10 @@ GstBusSyncReply mf_src_bus_watch_wrapper(GstBus *bus, GstMessage *message, gpoin
|
||||
gboolean activate_mode_wrapper(GstPad *pad, GstObject *parent, GstPadMode mode, gboolean activate) DECLSPEC_HIDDEN;
|
||||
@@ -130,5 +148,10 @@ GstBusSyncReply mf_src_bus_watch_wrapper(GstBus *bus, GstMessage *message, gpoin
|
||||
void mf_src_stream_added_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
void mf_src_stream_removed_wrapper(GstElement *element, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user) DECLSPEC_HIDDEN;
|
||||
|
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "2d6462cdee2bd87a49382794e5a554f33c367f09"
|
||||
echo "c1824d578ac514d29e79a5a00d6759f11dbe4813"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -4514,8 +4514,6 @@ fi
|
||||
# | tools/widl/widltypes.h
|
||||
# |
|
||||
if test "$enable_widl_winrt_support" -eq 1; then
|
||||
patch_apply widl-winrt-support/0003-widl-Support-WinRT-mta-threading-attribute-parsing.patch
|
||||
patch_apply widl-winrt-support/0004-widl-Support-WinRT-exclusiveto-attribute-parsing.patch
|
||||
patch_apply widl-winrt-support/0005-widl-Support-WinRT-runtimeclass-type.patch
|
||||
patch_apply widl-winrt-support/0006-widl-Support-WinRT-eventadd-eventremove-attributes.patch
|
||||
patch_apply widl-winrt-support/0007-widl-Support-WinRT-flags-attribute-parsing.patch
|
||||
|
@ -1,100 +0,0 @@
|
||||
From feb19e6a9ae86a2a17a981ab7f69481e57c2a465 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Tue, 13 Oct 2020 11:35:49 +0200
|
||||
Subject: [PATCH] widl: Support WinRT mta threading attribute parsing.
|
||||
|
||||
---
|
||||
tools/widl/header.c | 28 ++++++++++++++++++++++++++++
|
||||
tools/widl/parser.l | 1 +
|
||||
tools/widl/parser.y | 2 ++
|
||||
tools/widl/widltypes.h | 3 ++-
|
||||
4 files changed, 33 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/widl/header.c b/tools/widl/header.c
|
||||
index d5e35aac92f..aaae2fcf3c8 100644
|
||||
--- a/tools/widl/header.c
|
||||
+++ b/tools/widl/header.c
|
||||
@@ -1480,6 +1480,34 @@ static char *format_apicontract_macro(const type_t *type)
|
||||
return name;
|
||||
}
|
||||
|
||||
+static void write_winrt_type_comments(FILE *header, const type_t *type)
|
||||
+{
|
||||
+ expr_t *contract = get_attrp(type->attrs, ATTR_CONTRACT);
|
||||
+ fprintf(header, " *\n");
|
||||
+ if (contract)
|
||||
+ {
|
||||
+ const type_t *type = contract->u.tref.type;
|
||||
+ char *name = format_namespace(type->namespace, "", ".", type->name, NULL);
|
||||
+ int ver = contract->ref->u.lval;
|
||||
+ fprintf(header, " * Introduced to %s in version %d.%d\n *\n", name, (ver >> 16) & 0xffff, ver & 0xffff);
|
||||
+ free(name);
|
||||
+ }
|
||||
+ switch (get_attrv(type->attrs, ATTR_THREADING))
|
||||
+ {
|
||||
+ case THREADING_SINGLE: fprintf(header, " * Class Threading Model: Single Threaded Apartment\n *\n"); break;
|
||||
+ case THREADING_BOTH: fprintf(header, " * Class Threading Model: Both Single and Multi Threaded Apartment\n *\n"); break;
|
||||
+ case THREADING_MTA: fprintf(header, " * Class Threading Model: Multi Threaded Apartment\n *\n"); break;
|
||||
+ default: break;
|
||||
+ }
|
||||
+ switch (get_attrv(type->attrs, ATTR_MARSHALING_BEHAVIOR))
|
||||
+ {
|
||||
+ case MARSHALING_AGILE: fprintf(header, " * Class Marshaling Behavior: Agile - Class is agile\n *\n"); break;
|
||||
+ case MARSHALING_STANDARD: fprintf(header, " * Class Marshaling Behavior: Standard - Class marshals using the standard marshaler\n *\n"); break;
|
||||
+ case MARSHALING_NONE: fprintf(header, " * Class Marshaling Behavior: None - Class cannot be marshaled\n *\n"); break;
|
||||
+ default: break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void write_apicontract_guard_start(FILE *header, const expr_t *expr)
|
||||
{
|
||||
const type_t *type;
|
||||
diff --git a/tools/widl/parser.l b/tools/widl/parser.l
|
||||
index 01c6f800a08..067966a85d4 100644
|
||||
--- a/tools/widl/parser.l
|
||||
+++ b/tools/widl/parser.l
|
||||
@@ -385,6 +385,7 @@ static const struct keyword attr_keywords[] =
|
||||
{"marshaling_behavior", tMARSHALINGBEHAVIOR, 1},
|
||||
{"maybe", tMAYBE, 0},
|
||||
{"message", tMESSAGE, 0},
|
||||
+ {"mta" , tMTA, 1},
|
||||
{"neutral", tNEUTRAL, 0},
|
||||
{"nocode", tNOCODE, 0},
|
||||
{"nonbrowsable", tNONBROWSABLE, 0},
|
||||
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
|
||||
index 48f180cdb49..fd994ae70bb 100644
|
||||
--- a/tools/widl/parser.y
|
||||
+++ b/tools/widl/parser.y
|
||||
@@ -222,6 +222,7 @@ static typelib_t *current_typelib;
|
||||
%token tMAYBE tMESSAGE
|
||||
%token tMETHODS
|
||||
%token tMODULE
|
||||
+%token tMTA
|
||||
%token tNAMESPACE
|
||||
%token tNOCODE tNONBROWSABLE
|
||||
%token tNONCREATABLE
|
||||
@@ -1154,6 +1155,7 @@ threading_type:
|
||||
| tSINGLE { $$ = THREADING_SINGLE; }
|
||||
| tFREE { $$ = THREADING_FREE; }
|
||||
| tBOTH { $$ = THREADING_BOTH; }
|
||||
+ | tMTA { $$ = THREADING_MTA; }
|
||||
;
|
||||
|
||||
pointer_type:
|
||||
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
|
||||
index 6c130d4701e..8a3bd00e340 100644
|
||||
--- a/tools/widl/widltypes.h
|
||||
+++ b/tools/widl/widltypes.h
|
||||
@@ -269,7 +269,8 @@ enum threading_type
|
||||
THREADING_NEUTRAL,
|
||||
THREADING_SINGLE,
|
||||
THREADING_FREE,
|
||||
- THREADING_BOTH
|
||||
+ THREADING_BOTH,
|
||||
+ THREADING_MTA,
|
||||
};
|
||||
|
||||
enum marshaling_type
|
||||
--
|
||||
2.29.2
|
||||
|
@ -1,92 +0,0 @@
|
||||
From 25fe11311b4f20a900d4b001a051c17a980d0b75 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Tue, 13 Oct 2020 00:11:08 +0200
|
||||
Subject: [PATCH] widl: Support WinRT exclusiveto attribute parsing.
|
||||
|
||||
---
|
||||
tools/widl/header.c | 7 +++++++
|
||||
tools/widl/parser.l | 1 +
|
||||
tools/widl/parser.y | 3 +++
|
||||
tools/widl/widltypes.h | 1 +
|
||||
4 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/tools/widl/header.c b/tools/widl/header.c
|
||||
index 3fa938192d3..1d910364994 100644
|
||||
--- a/tools/widl/header.c
|
||||
+++ b/tools/widl/header.c
|
||||
@@ -1485,6 +1485,7 @@ static char *format_apicontract_macro(const type_t *type)
|
||||
static void write_winrt_type_comments(FILE *header, const type_t *type)
|
||||
{
|
||||
expr_t *contract = get_attrp(type->attrs, ATTR_CONTRACT);
|
||||
+ type_t *exclusiveto = get_attrp(type->attrs, ATTR_EXCLUSIVETO);
|
||||
fprintf(header, " *\n");
|
||||
if (contract)
|
||||
{
|
||||
@@ -1494,6 +1495,12 @@ static void write_winrt_type_comments(FILE *header, const type_t *type)
|
||||
fprintf(header, " * Introduced to %s in version %d.%d\n *\n", name, (ver >> 16) & 0xffff, ver & 0xffff);
|
||||
free(name);
|
||||
}
|
||||
+ if (exclusiveto)
|
||||
+ {
|
||||
+ char *name = format_namespace(exclusiveto->namespace, "", ".", exclusiveto->name, NULL);
|
||||
+ fprintf(header, " * Interface is a part of the implementation of type %s\n *\n", name);
|
||||
+ free(name);
|
||||
+ }
|
||||
switch (get_attrv(type->attrs, ATTR_THREADING))
|
||||
{
|
||||
case THREADING_SINGLE: fprintf(header, " * Class Threading Model: Single Threaded Apartment\n *\n"); break;
|
||||
diff --git a/tools/widl/parser.l b/tools/widl/parser.l
|
||||
index 067966a85d4..de25b7d12c4 100644
|
||||
--- a/tools/widl/parser.l
|
||||
+++ b/tools/widl/parser.l
|
||||
@@ -358,6 +358,7 @@ static const struct keyword attr_keywords[] =
|
||||
{"encode", tENCODE, 0},
|
||||
{"endpoint", tENDPOINT, 0},
|
||||
{"entry", tENTRY, 0},
|
||||
+ {"exclusiveto", tEXCLUSIVETO, 1},
|
||||
{"explicit_handle", tEXPLICITHANDLE, 0},
|
||||
{"fault_status", tFAULTSTATUS, 0},
|
||||
{"force_allocate", tFORCEALLOCATE, 0},
|
||||
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
|
||||
index caaa2f49d0c..57f1e3f5301 100644
|
||||
--- a/tools/widl/parser.y
|
||||
+++ b/tools/widl/parser.y
|
||||
@@ -196,6 +196,7 @@ static typelib_t *current_typelib;
|
||||
%token tDLLNAME tDONTFREE tDOUBLE tDUAL
|
||||
%token tENABLEALLOCATE tENCODE tENDPOINT
|
||||
%token tENTRY tENUM tERRORSTATUST
|
||||
+%token tEXCLUSIVETO
|
||||
%token tEXPLICITHANDLE tEXTERN
|
||||
%token tFALSE
|
||||
%token tFASTCALL tFAULTSTATUS
|
||||
@@ -561,6 +562,7 @@ attribute: { $$ = NULL; }
|
||||
| tENCODE { $$ = make_attr(ATTR_ENCODE); }
|
||||
| tENDPOINT '(' str_list ')' { $$ = make_attrp(ATTR_ENDPOINT, $3); }
|
||||
| tENTRY '(' expr_const ')' { $$ = make_attrp(ATTR_ENTRY, $3); }
|
||||
+ | tEXCLUSIVETO '(' decl_spec ')' { $$ = make_attrp(ATTR_EXCLUSIVETO, $3->type); }
|
||||
| tEXPLICITHANDLE { $$ = make_attr(ATTR_EXPLICIT_HANDLE); }
|
||||
| tFAULTSTATUS { $$ = make_attr(ATTR_FAULTSTATUS); }
|
||||
| tFORCEALLOCATE { $$ = make_attr(ATTR_FORCEALLOCATE); }
|
||||
@@ -2223,6 +2225,7 @@ struct allowed_attr allowed_attr[] =
|
||||
/* ATTR_ENCODE */ { 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "encode" },
|
||||
/* ATTR_ENDPOINT */ { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "endpoint" },
|
||||
/* ATTR_ENTRY */ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "entry" },
|
||||
+ /* ATTR_EXCLUSIVETO */ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "exclusive_to" },
|
||||
/* ATTR_EXPLICIT_HANDLE */ { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "explicit_handle" },
|
||||
/* ATTR_FAULTSTATUS */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "fault_status" },
|
||||
/* ATTR_FORCEALLOCATE */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "force_allocate" },
|
||||
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
|
||||
index 8a3bd00e340..7ad0cbea66f 100644
|
||||
--- a/tools/widl/widltypes.h
|
||||
+++ b/tools/widl/widltypes.h
|
||||
@@ -103,6 +103,7 @@ enum attr_type
|
||||
ATTR_ENCODE,
|
||||
ATTR_ENDPOINT,
|
||||
ATTR_ENTRY,
|
||||
+ ATTR_EXCLUSIVETO,
|
||||
ATTR_EXPLICIT_HANDLE,
|
||||
ATTR_FAULTSTATUS,
|
||||
ATTR_FORCEALLOCATE,
|
||||
--
|
||||
2.29.2
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b44446b4cb028670ebc371a7c7f3bb5eef05c7c3 Mon Sep 17 00:00:00 2001
|
||||
From 62715392ea059ed59519abacb47ab84e1fc5ab64 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 20 Nov 2020 11:06:18 +0100
|
||||
Subject: [PATCH] widl: Support WinRT runtimeclass type.
|
||||
@ -10,15 +10,15 @@ type is instead used in the generated code.
|
||||
---
|
||||
include/windows.media.speechsynthesis.idl | 25 ++
|
||||
tools/widl/expr.c | 1 +
|
||||
tools/widl/header.c | 65 +++++-
|
||||
tools/widl/header.c | 100 +++++++-
|
||||
tools/widl/parser.l | 1 +
|
||||
tools/widl/parser.y | 269 +++++++++++++---------
|
||||
tools/widl/typegen.c | 4 +
|
||||
tools/widl/typelib.c | 1 +
|
||||
tools/widl/typetree.c | 17 ++
|
||||
tools/widl/typetree.h | 24 ++
|
||||
tools/widl/widltypes.h | 7 +
|
||||
10 files changed, 300 insertions(+), 114 deletions(-)
|
||||
tools/widl/widltypes.h | 10 +-
|
||||
10 files changed, 337 insertions(+), 115 deletions(-)
|
||||
|
||||
diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl
|
||||
index 7a1de5fcba6..90bc9f279c6 100644
|
||||
@ -76,10 +76,10 @@ index be8311cfb7f..13bd5a889aa 100644
|
||||
break;
|
||||
case TYPE_ALIAS:
|
||||
diff --git a/tools/widl/header.c b/tools/widl/header.c
|
||||
index 1d910364994..93bcb4f5214 100644
|
||||
index d5e35aac92f..cd31d145caa 100644
|
||||
--- a/tools/widl/header.c
|
||||
+++ b/tools/widl/header.c
|
||||
@@ -465,6 +465,9 @@ void write_type_left(FILE *h, const decl_spec_t *ds, enum name_type name_type, i
|
||||
@@ -463,6 +463,9 @@ void write_type_left(FILE *h, const decl_spec_t *ds, enum name_type name_type, i
|
||||
case TYPE_COCLASS:
|
||||
fprintf(h, "%s", name);
|
||||
break;
|
||||
@ -89,7 +89,7 @@ index 1d910364994..93bcb4f5214 100644
|
||||
case TYPE_VOID:
|
||||
fprintf(h, "void");
|
||||
break;
|
||||
@@ -547,6 +550,7 @@ void write_type_right(FILE *h, type_t *t, int is_field)
|
||||
@@ -545,6 +548,7 @@ void write_type_right(FILE *h, type_t *t, int is_field)
|
||||
case TYPE_MODULE:
|
||||
case TYPE_COCLASS:
|
||||
case TYPE_INTERFACE:
|
||||
@ -97,7 +97,7 @@ index 1d910364994..93bcb4f5214 100644
|
||||
break;
|
||||
case TYPE_APICONTRACT:
|
||||
/* not supposed to be here */
|
||||
@@ -1033,7 +1037,8 @@ static int is_aggregate_return(const var_t *func)
|
||||
@@ -1031,7 +1035,8 @@ static int is_aggregate_return(const var_t *func)
|
||||
{
|
||||
enum type_type type = type_get_type(type_function_get_rettype(func->declspec.type));
|
||||
return type == TYPE_STRUCT || type == TYPE_UNION ||
|
||||
@ -107,10 +107,29 @@ index 1d910364994..93bcb4f5214 100644
|
||||
}
|
||||
|
||||
static char *get_vtbl_entry_name(const type_t *iface, const var_t *func)
|
||||
@@ -1501,6 +1506,21 @@ static void write_winrt_type_comments(FILE *header, const type_t *type)
|
||||
fprintf(header, " * Interface is a part of the implementation of type %s\n *\n", name);
|
||||
free(name);
|
||||
}
|
||||
@@ -1480,6 +1485,56 @@ static char *format_apicontract_macro(const type_t *type)
|
||||
return name;
|
||||
}
|
||||
|
||||
+static void write_winrt_type_comments(FILE *header, const type_t *type)
|
||||
+{
|
||||
+ expr_t *contract = get_attrp(type->attrs, ATTR_CONTRACT);
|
||||
+ type_t *exclusiveto = get_attrp(type->attrs, ATTR_EXCLUSIVETO);
|
||||
+ fprintf(header, " *\n");
|
||||
+ if (contract)
|
||||
+ {
|
||||
+ const type_t *type = contract->u.tref.type;
|
||||
+ char *name = format_namespace(type->namespace, "", ".", type->name, NULL);
|
||||
+ int ver = contract->ref->u.lval;
|
||||
+ fprintf(header, " * Introduced to %s in version %d.%d\n *\n", name, (ver >> 16) & 0xffff, ver & 0xffff);
|
||||
+ free(name);
|
||||
+ }
|
||||
+ if (exclusiveto)
|
||||
+ {
|
||||
+ char *name = format_namespace(exclusiveto->namespace, "", ".", exclusiveto->name, NULL);
|
||||
+ fprintf(header, " * Interface is a part of the implementation of type %s\n *\n", name);
|
||||
+ free(name);
|
||||
+ }
|
||||
+ if (type_get_type(type) == TYPE_RUNTIMECLASS)
|
||||
+ {
|
||||
+ ifref_list_t *ifaces = type_runtimeclass_get_ifaces(type);
|
||||
@ -126,10 +145,26 @@ index 1d910364994..93bcb4f5214 100644
|
||||
+ }
|
||||
+ fprintf(header, " *\n");
|
||||
+ }
|
||||
switch (get_attrv(type->attrs, ATTR_THREADING))
|
||||
{
|
||||
case THREADING_SINGLE: fprintf(header, " * Class Threading Model: Single Threaded Apartment\n *\n"); break;
|
||||
@@ -1728,6 +1748,45 @@ static void write_apicontract(FILE *header, type_t *apicontract)
|
||||
+ switch (get_attrv(type->attrs, ATTR_THREADING))
|
||||
+ {
|
||||
+ case THREADING_SINGLE: fprintf(header, " * Class Threading Model: Single Threaded Apartment\n *\n"); break;
|
||||
+ case THREADING_BOTH: fprintf(header, " * Class Threading Model: Both Single and Multi Threaded Apartment\n *\n"); break;
|
||||
+ case THREADING_MTA: fprintf(header, " * Class Threading Model: Multi Threaded Apartment\n *\n"); break;
|
||||
+ default: break;
|
||||
+ }
|
||||
+ switch (get_attrv(type->attrs, ATTR_MARSHALING_BEHAVIOR))
|
||||
+ {
|
||||
+ case MARSHALING_AGILE: fprintf(header, " * Class Marshaling Behavior: Agile - Class is agile\n *\n"); break;
|
||||
+ case MARSHALING_STANDARD: fprintf(header, " * Class Marshaling Behavior: Standard - Class marshals using the standard marshaler\n *\n"); break;
|
||||
+ case MARSHALING_NONE: fprintf(header, " * Class Marshaling Behavior: None - Class cannot be marshaled\n *\n"); break;
|
||||
+ default: break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void write_apicontract_guard_start(FILE *header, const expr_t *expr)
|
||||
{
|
||||
const type_t *type;
|
||||
@@ -1689,6 +1744,45 @@ static void write_apicontract(FILE *header, type_t *apicontract)
|
||||
free(name);
|
||||
}
|
||||
|
||||
@ -175,7 +210,7 @@ index 1d910364994..93bcb4f5214 100644
|
||||
static void write_import(FILE *header, const char *fname)
|
||||
{
|
||||
char *hname, *p;
|
||||
@@ -1792,6 +1851,8 @@ static void write_forward_decls(FILE *header, const statement_list_t *stmts)
|
||||
@@ -1753,6 +1847,8 @@ static void write_forward_decls(FILE *header, const statement_list_t *stmts)
|
||||
}
|
||||
else if (type_get_type(stmt->u.type) == TYPE_COCLASS)
|
||||
write_coclass_forward(header, stmt->u.type);
|
||||
@ -184,7 +219,7 @@ index 1d910364994..93bcb4f5214 100644
|
||||
break;
|
||||
case STMT_TYPEREF:
|
||||
case STMT_IMPORTLIB:
|
||||
@@ -1848,6 +1909,8 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
|
||||
@@ -1809,6 +1905,8 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
|
||||
write_coclass(header, stmt->u.type);
|
||||
else if (type_get_type(stmt->u.type) == TYPE_APICONTRACT)
|
||||
write_apicontract(header, stmt->u.type);
|
||||
@ -194,7 +229,7 @@ index 1d910364994..93bcb4f5214 100644
|
||||
{
|
||||
write_type_definition(header, stmt->u.type, stmt->declonly);
|
||||
diff --git a/tools/widl/parser.l b/tools/widl/parser.l
|
||||
index de25b7d12c4..80a6bc38afb 100644
|
||||
index 7a811d537d1..6bbfed5e80b 100644
|
||||
--- a/tools/widl/parser.l
|
||||
+++ b/tools/widl/parser.l
|
||||
@@ -298,6 +298,7 @@ static const struct keyword keywords[] = {
|
||||
@ -206,7 +241,7 @@ index de25b7d12c4..80a6bc38afb 100644
|
||||
{"signed", tSIGNED, 0},
|
||||
{"sizeof", tSIZEOF, 0},
|
||||
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
|
||||
index 57f1e3f5301..93714ebf712 100644
|
||||
index 351bbd12107..d12caa06b63 100644
|
||||
--- a/tools/widl/parser.y
|
||||
+++ b/tools/widl/parser.y
|
||||
@@ -100,6 +100,7 @@ static attr_list_t *check_library_attrs(const char *name, attr_list_t *attrs);
|
||||
@ -710,10 +745,20 @@ index 7abec41a8fd..951084cf875 100644
|
||||
{
|
||||
type = type_get_real_type(type);
|
||||
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
|
||||
index 7ad0cbea66f..77313b30c0f 100644
|
||||
index fbaabfbc8c3..77313b30c0f 100644
|
||||
--- a/tools/widl/widltypes.h
|
||||
+++ b/tools/widl/widltypes.h
|
||||
@@ -426,6 +426,11 @@ struct alias_details
|
||||
@@ -270,7 +270,8 @@ enum threading_type
|
||||
THREADING_NEUTRAL,
|
||||
THREADING_SINGLE,
|
||||
THREADING_FREE,
|
||||
- THREADING_BOTH
|
||||
+ THREADING_BOTH,
|
||||
+ THREADING_MTA,
|
||||
};
|
||||
|
||||
enum marshaling_type
|
||||
@@ -425,6 +426,11 @@ struct alias_details
|
||||
struct _decl_spec_t aliasee;
|
||||
};
|
||||
|
||||
@ -725,7 +770,7 @@ index 7ad0cbea66f..77313b30c0f 100644
|
||||
#define HASHMAX 64
|
||||
|
||||
struct namespace {
|
||||
@@ -453,6 +458,7 @@ enum type_type
|
||||
@@ -452,6 +458,7 @@ enum type_type
|
||||
TYPE_ARRAY,
|
||||
TYPE_BITFIELD,
|
||||
TYPE_APICONTRACT,
|
||||
@ -733,7 +778,7 @@ index 7ad0cbea66f..77313b30c0f 100644
|
||||
};
|
||||
|
||||
struct _type_t {
|
||||
@@ -473,6 +479,7 @@ struct _type_t {
|
||||
@@ -472,6 +479,7 @@ struct _type_t {
|
||||
struct pointer_details pointer;
|
||||
struct bitfield_details bitfield;
|
||||
struct alias_details alias;
|
||||
|
@ -1 +1 @@
|
||||
2d6462cdee2bd87a49382794e5a554f33c367f09
|
||||
c1824d578ac514d29e79a5a00d6759f11dbe4813
|
||||
|
Loading…
Reference in New Issue
Block a user