Module: wine
Branch: master
Commit: 6070536f170afa1936d70d6c22f4977686fff530
URL: https://gitlab.winehq.org/wine/wine/-/commit/6070536f170afa1936d70d6c22f497…
Author: Mohamad Al-Jaf <mohamadaljaf(a)gmail.com>
Date: Tue May 28 23:46:36 2024 -0400
coremessaging: Add CreateDispatcherQueueController() stub.
Needed by Photoshop 2024.
---
dlls/coremessaging/Makefile.in | 3 +++
dlls/coremessaging/coremessaging.spec | 2 +-
dlls/coremessaging/main.c | 30 ++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/dlls/coremessaging/Makefile.in b/dlls/coremessaging/Makefile.in
index 2d43a9077cd..0aa0fc43a9b 100644
--- a/dlls/coremessaging/Makefile.in
+++ b/dlls/coremessaging/Makefile.in
@@ -1 +1,4 @@
MODULE = coremessaging.dll
+
+SOURCES = \
+ main.c
diff --git a/dlls/coremessaging/coremessaging.spec b/dlls/coremessaging/coremessaging.spec
index f8c31e6fbdb..58f2be2dc8e 100644
--- a/dlls/coremessaging/coremessaging.spec
+++ b/dlls/coremessaging/coremessaging.spec
@@ -15,7 +15,7 @@
@ stub CoreUIOpenExisting
@ stub CoreUIRouteToTestRegistrar
@ stub CoreUIUninitializeTestService
-@ stub CreateDispatcherQueueController
+@ stdcall CreateDispatcherQueueController(long long long ptr)
@ stub CreateDispatcherQueueForCurrentThread
@ stdcall -private DllCanUnloadNow()
@ stub DllGetActivationFactory
diff --git a/dlls/coremessaging/main.c b/dlls/coremessaging/main.c
new file mode 100644
index 00000000000..4944f28a49a
--- /dev/null
+++ b/dlls/coremessaging/main.c
@@ -0,0 +1,30 @@
+/* WinRT CoreMessaging Implementation
+ *
+ * Copyright (C) 2024 Mohamad Al-Jaf
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "dispatcherqueue.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(messaging);
+
+HRESULT WINAPI CreateDispatcherQueueController( DispatcherQueueOptions options, PDISPATCHERQUEUECONTROLLER *queue_controller )
+{
+ FIXME( "options.dwSize = %lu, options.threadType = %d, options.apartmentType = %d, queue_controller %p stub!\n",
+ options.dwSize, options.threadType, options.apartmentType, queue_controller );
+ return E_NOTIMPL;
+}
Module: wine
Branch: master
Commit: 05ff16ebb61081ef6bfba3ecd8df98856668f8a8
URL: https://gitlab.winehq.org/wine/wine/-/commit/05ff16ebb61081ef6bfba3ecd8df98…
Author: Mohamad Al-Jaf <mohamadaljaf(a)gmail.com>
Date: Tue May 28 23:34:49 2024 -0400
include: Add dispatcherqueue.idl file.
---
include/Makefile.in | 1 +
include/dispatcherqueue.idl | 48 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+)
diff --git a/include/Makefile.in b/include/Makefile.in
index fa8c096eabd..81ff6cfa634 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -239,6 +239,7 @@ SOURCES = \
dinput.h \
dinputd.h \
directmanipulation.idl \
+ dispatcherqueue.idl \
dispdib.h \
dispex.idl \
dlgs.h \
diff --git a/include/dispatcherqueue.idl b/include/dispatcherqueue.idl
new file mode 100644
index 00000000000..7a4be6ede0e
--- /dev/null
+++ b/include/dispatcherqueue.idl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2024 Mohamad Al-Jaf
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef __WIDL__
+#pragma winrt ns_prefix
+#endif
+
+import "windows.system.idl";
+
+typedef Windows.System.IDispatcherQueue *PDISPATCHERQUEUE;
+typedef Windows.System.IDispatcherQueueController *PDISPATCHERQUEUECONTROLLER;
+
+typedef enum DISPATCHERQUEUE_THREAD_APARTMENTTYPE
+{
+ DQTAT_COM_NONE = 0,
+ DQTAT_COM_ASTA = 1,
+ DQTAT_COM_STA = 2,
+} DISPATCHERQUEUE_THREAD_APARTMENTTYPE;
+
+typedef enum DISPATCHERQUEUE_THREAD_TYPE
+{
+ DQTYPE_THREAD_DEDICATED = 1,
+ DQTYPE_THREAD_CURRENT = 2,
+} DISPATCHERQUEUE_THREAD_TYPE;
+
+typedef struct DispatcherQueueOptions
+{
+ DWORD dwSize;
+ DISPATCHERQUEUE_THREAD_TYPE threadType;
+ DISPATCHERQUEUE_THREAD_APARTMENTTYPE apartmentType;
+} DispatcherQueueOptions;
+
+[local] HRESULT __stdcall CreateDispatcherQueueController(DispatcherQueueOptions options, PDISPATCHERQUEUECONTROLLER *queue_controller);
Module: wine
Branch: master
Commit: 93d50fd9de906b7acfa4b5b8c40bff394a2df4e2
URL: https://gitlab.winehq.org/wine/wine/-/commit/93d50fd9de906b7acfa4b5b8c40bff…
Author: Elizabeth Figura <zfigura(a)codeweavers.com>
Date: Mon Mar 25 18:37:42 2024 -0500
widl: Do not write type definitions for types defined in an imported header.
midl does not, and this would result in redefinition errors.
An equivalent (and arguably a bit more declarative) way to do this would be to
keep track in the parser whether a type or typedef statement is actually a
definition or not, and record that information in the statement_t. However, this
would require passing additional information alongside the type_t from each
relevant bison rule, which would thrash a lot of code.
---
tools/widl/parser.y | 6 +++---
tools/widl/typetree.c | 2 ++
tools/widl/widltypes.h | 1 +
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index d8363afa981..f5b82f29db3 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1359,7 +1359,7 @@ type:
typedef: m_attributes tTYPEDEF m_attributes decl_spec declarator_list
{ $1 = append_attribs($1, $3);
reg_typedefs( @$, $4, $5, check_typedef_attrs( $1 ) );
- $$ = make_statement_typedef($5, $4->type->defined);
+ $$ = make_statement_typedef($5, $4->type->defined && !$4->type->defined_in_import);
}
;
@@ -1719,7 +1719,7 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, declarator
v->declspec.type = decl->type;
v->declspec.qualifier = decl->qualifier;
v->attrs = attrs;
- v->is_defined = type->defined;
+ v->is_defined = type->defined && !type->defined_in_import;
if (is_attr(type->attrs, ATTR_CALLCONV) && !is_func(type))
error_loc("calling convention applied to non-function type\n");
@@ -2833,7 +2833,7 @@ static statement_t *make_statement_type_decl(type_t *type)
{
statement_t *stmt = make_statement(STMT_TYPE);
stmt->u.type = type;
- stmt->is_defined = type->defined;
+ stmt->is_defined = type->defined && !type->defined_in_import;
return stmt;
}
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index ea17f16e0c8..af41906c42b 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -536,6 +536,7 @@ static void define_type(type_t *type, const struct location *where)
error_loc("type %s already defined at %s:%d\n", type->name, type->where.input_name, type->where.first_line );
type->defined = TRUE;
+ type->defined_in_import = parse_only;
type->where = *where;
}
@@ -935,6 +936,7 @@ type_t *type_delegate_define(type_t *delegate, attr_list_t *attrs,
iface->details.iface->disp_inherit = NULL;
iface->details.iface->async_iface = NULL;
iface->details.iface->requires = NULL;
+ define_type(iface, where);
iface->defined = TRUE;
compute_method_indexes(iface);
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
index 9d99c83a25e..7bc24fad0d3 100644
--- a/tools/widl/widltypes.h
+++ b/tools/widl/widltypes.h
@@ -523,6 +523,7 @@ struct _type_t {
struct location where;
unsigned int ignore : 1;
unsigned int defined : 1;
+ unsigned int defined_in_import : 1;
unsigned int written : 1;
unsigned int user_types_registered : 1;
unsigned int tfswrite : 1; /* if the type needs to be written to the TFS */
Module: wine
Branch: master
Commit: 1db2eaf0b39c7839fd6f41ecd583bc9852f1fde9
URL: https://gitlab.winehq.org/wine/wine/-/commit/1db2eaf0b39c7839fd6f41ecd583bc…
Author: Elizabeth Figura <zfigura(a)codeweavers.com>
Date: Mon Mar 25 18:26:42 2024 -0500
widl: Update the type location in define_type().
This improves error reporting for the following IDL:
interface apple;
[uuid(12345678-1234-1234-1234-123456654321)]
interface apple {void func(void);}
[uuid(12345678-1234-1234-1234-123456654321)]
interface apple {void func(void);}
Previously widl would report:
test2.idl:19:34: error: type apple already defined at test2.idl:2
This changes it to refer to line 5, where the interface is actually defined.
---
tools/widl/parser.y | 42 ++++++++++++++---------------
tools/widl/typetree.c | 74 ++++++++++++++++++++++++++++++---------------------
tools/widl/typetree.h | 41 ++++++++++++++++++----------
3 files changed, 92 insertions(+), 65 deletions(-)
Module: wine
Branch: master
Commit: da8d81c63ddb066ca37dcfe2c7d58b8372a2fa20
URL: https://gitlab.winehq.org/wine/wine/-/commit/da8d81c63ddb066ca37dcfe2c7d58b…
Author: Elizabeth Figura <zfigura(a)codeweavers.com>
Date: Mon Mar 25 17:18:21 2024 -0500
widl: Invert "declonly".
This makes the logic around it a bit simpler, and I find it easier to understand as well.
---
tools/widl/header.c | 58 +++++++++++++++++++++++++-------------------------
tools/widl/header.h | 2 +-
tools/widl/parser.y | 16 +++++++-------
tools/widl/typegen.c | 8 +++----
tools/widl/widltypes.h | 8 +++++--
5 files changed, 48 insertions(+), 44 deletions(-)