Piotr Caban : msvcp140: Add _ContextCallback implementation.

Alexandre Julliard julliard at winehq.org
Thu Jul 20 12:11:27 CDT 2017


Module: wine
Branch: stable
Commit: 84ac5d59741f4c9c62ecf95b26cc4a6da8199fca
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=84ac5d59741f4c9c62ecf95b26cc4a6da8199fca

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Mar 10 16:01:36 2017 +0100

msvcp140: Add _ContextCallback implementation.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 2fe03d7d3765895260e524e41c187bc0393bc912)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/msvcp140/msvcp140.spec | 26 +++++++++++------------
 dlls/msvcp90/misc.c         | 51 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/dlls/msvcp140/msvcp140.spec b/dlls/msvcp140/msvcp140.spec
index 13df2e1..8d62936 100644
--- a/dlls/msvcp140/msvcp140.spec
+++ b/dlls/msvcp140/msvcp140.spec
@@ -1096,9 +1096,9 @@
 @ cdecl -arch=win64 ?_Addfac at _Locimp@locale at std@@AEAAXPEAVfacet at 23@_K at Z(ptr ptr long) locale__Locimp__Addfac
 @ cdecl -arch=win32 ?_Addstd at ios_base@std@@SAXPAV12@@Z(ptr) ios_base_Addstd
 @ cdecl -arch=win64 ?_Addstd at ios_base@std@@SAXPEAV12@@Z(ptr) ios_base_Addstd
-@ stub -arch=arm ?_Assign at _ContextCallback@details at Concurrency@@AAAXPAX at Z
-@ stub -arch=i386 ?_Assign at _ContextCallback@details at Concurrency@@AAEXPAX at Z
-@ stub -arch=win64 ?_Assign at _ContextCallback@details at Concurrency@@AEAAXPEAX at Z
+@ cdecl -arch=arm ?_Assign at _ContextCallback@details at Concurrency@@AAAXPAX at Z(ptr ptr) _ContextCallback__Assign
+@ thiscall -arch=i386 ?_Assign at _ContextCallback@details at Concurrency@@AAEXPAX at Z(ptr ptr) _ContextCallback__Assign
+@ cdecl -arch=win64 ?_Assign at _ContextCallback@details at Concurrency@@AEAAXPEAX at Z(ptr ptr) _ContextCallback__Assign
 @ stub ?_Atexit@@YAXP6AXXZ at Z
 @ extern ?_BADOFF at std@@3_JB std_BADOFF
 @ cdecl -arch=arm ?_C_str@?$_Yarn at D@std@@QBAPBDXZ(ptr) _Yarn_char_c_str
@@ -1110,15 +1110,15 @@
 @ cdecl -arch=arm ?_C_str@?$_Yarn at _W@std@@QBAPB_WXZ(ptr) _Yarn_wchar__C_str
 @ thiscall -arch=i386 ?_C_str@?$_Yarn at _W@std@@QBEPB_WXZ(ptr) _Yarn_wchar__C_str
 @ cdecl -arch=win64 ?_C_str@?$_Yarn at _W@std@@QEBAPEB_WXZ(ptr) _Yarn_wchar__C_str
-@ stub -arch=arm ?_CallInContext at _ContextCallback@details at Concurrency@@QBAXV?$function@$$A6AXXZ at std@@_N at Z
-@ stub -arch=i386 ?_CallInContext at _ContextCallback@details at Concurrency@@QBEXV?$function@$$A6AXXZ at std@@_N at Z
-@ stub -arch=win64 ?_CallInContext at _ContextCallback@details at Concurrency@@QEBAXV?$function@$$A6AXXZ at std@@_N at Z
+@ cdecl -arch=arm ?_CallInContext at _ContextCallback@details at Concurrency@@QBAXV?$function@$$A6AXXZ at std@@_N at Z(ptr ptr long) _ContextCallback__CallInContext
+@ thiscall -arch=i386 ?_CallInContext at _ContextCallback@details at Concurrency@@QBEXV?$function@$$A6AXXZ at std@@_N at Z(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr long) _ContextCallback__CallInContext
+@ cdecl -arch=win64 ?_CallInContext at _ContextCallback@details at Concurrency@@QEBAXV?$function@$$A6AXXZ at std@@_N at Z(ptr ptr long) _ContextCallback__CallInContext
 @ cdecl -arch=arm ?_Callfns at ios_base@std@@AAAXW4event at 12@@Z(ptr long) ios_base_Callfns
 @ thiscall -arch=i386 ?_Callfns at ios_base@std@@AAEXW4event at 12@@Z(ptr long) ios_base_Callfns
 @ cdecl -arch=win64 ?_Callfns at ios_base@std@@AEAAXW4event at 12@@Z(ptr long) ios_base_Callfns
-@ stub -arch=arm ?_Capture at _ContextCallback@details at Concurrency@@AAAXXZ
-@ stub -arch=i386 ?_Capture at _ContextCallback@details at Concurrency@@AAEXXZ
-@ stub -arch=win64 ?_Capture at _ContextCallback@details at Concurrency@@AEAAXXZ
+@ cdecl -arch=arm ?_Capture at _ContextCallback@details at Concurrency@@AAAXXZ(ptr) _ContextCallback__Capture
+@ thiscall -arch=i386 ?_Capture at _ContextCallback@details at Concurrency@@AAEXXZ(ptr) _ContextCallback__Capture
+@ cdecl -arch=win64 ?_Capture at _ContextCallback@details at Concurrency@@AEAAXXZ(ptr) _ContextCallback__Capture
 @ extern -arch=win32 ?_Clocptr at _Locimp@locale at std@@0PAV123 at A locale__Locimp__Clocptr
 @ extern -arch=win64 ?_Clocptr at _Locimp@locale at std@@0PEAV123 at EA locale__Locimp__Clocptr
 @ cdecl -arch=arm ?_Decref at facet@locale at std@@UAAPAV_Facet_base at 3@XZ(ptr) locale_facet__Decref
@@ -1442,7 +1442,7 @@
 @ cdecl -arch=win64 ?_Iput@?$num_put at GV?$ostreambuf_iterator at GU?$char_traits at G@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator at GU?$char_traits at G@std@@@2 at V32@AEAVios_base at 2@GPEAD_K at Z(ptr ptr ptr ptr long ptr long) num_put_short__Iput
 @ cdecl -arch=win32 ?_Iput@?$num_put at _WV?$ostreambuf_iterator at _WU?$char_traits at _W@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator at _WU?$char_traits at _W@std@@@2 at V32@AAVios_base at 2@_WPADI at Z(ptr ptr long ptr ptr long ptr long) num_put_wchar__Iput
 @ cdecl -arch=win64 ?_Iput@?$num_put at _WV?$ostreambuf_iterator at _WU?$char_traits at _W@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator at _WU?$char_traits at _W@std@@@2 at V32@AEAVios_base at 2@_WPEAD_K at Z(ptr ptr ptr ptr long ptr long) num_put_wchar__Iput
-@ stub ?_IsCurrentOriginSTA at _ContextCallback@details at Concurrency@@CA_NXZ
+@ cdecl ?_IsCurrentOriginSTA at _ContextCallback@details at Concurrency@@CA_NXZ(ptr) _ContextCallback__IsCurrentOriginSTA
 @ stub ?_IsNonBlockingThread at _Task_impl_base@details at Concurrency@@SA_NXZ
 @ cdecl -arch=win32 ?_Locimp_Addfac at _Locimp@locale at std@@CAXPAV123 at PAVfacet@23 at I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
 @ cdecl -arch=win64 ?_Locimp_Addfac at _Locimp@locale at std@@CAXPEAV123 at PEAVfacet@23 at _K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
@@ -1592,9 +1592,9 @@
 @ stub ?_ReportUnobservedException at details@Concurrency@@YAXXZ
 @ stub -arch=win32 ?_Reschedule_chore at details@Concurrency@@YAHPBU_Threadpool_chore at 12@@Z
 @ stub -arch=win64 ?_Reschedule_chore at details@Concurrency@@YAHPEBU_Threadpool_chore at 12@@Z
-@ stub -arch=arm ?_Reset at _ContextCallback@details at Concurrency@@AAAXXZ
-@ stub -arch=i386 ?_Reset at _ContextCallback@details at Concurrency@@AAEXXZ
-@ stub -arch=win64 ?_Reset at _ContextCallback@details at Concurrency@@AEAAXXZ
+@ cdecl -arch=arm ?_Reset at _ContextCallback@details at Concurrency@@AAAXXZ(ptr) _ContextCallback__Reset
+@ thiscall -arch=i386 ?_Reset at _ContextCallback@details at Concurrency@@AAEXXZ(ptr) _ContextCallback__Reset
+@ cdecl -arch=win64 ?_Reset at _ContextCallback@details at Concurrency@@AEAAXXZ(ptr) _ContextCallback__Reset
 @ stub ?_Rethrow_future_exception at std@@YAXVexception_ptr at 1@@Z
 @ stub -arch=win32 ?_Rng_abort at std@@YAXPBD at Z
 @ stub -arch=win64 ?_Rng_abort at std@@YAXPEBD at Z
diff --git a/dlls/msvcp90/misc.c b/dlls/msvcp90/misc.c
index e819699..aa0a289 100644
--- a/dlls/msvcp90/misc.c
+++ b/dlls/msvcp90/misc.c
@@ -1376,4 +1376,55 @@ task_continuation_context* __thiscall task_continuation_context_ctor(task_contin
     memset(this, 0, sizeof(*this));
     return this;
 }
+
+typedef struct {
+    const vtable_ptr *vtable;
+    void (__cdecl *func)(void);
+    int unk[4];
+    void *unk2[3];
+    void *this;
+} function_void_cdecl_void;
+
+/* ?_Assign at _ContextCallback@details at Concurrency@@AAEXPAX at Z */
+/* ?_Assign at _ContextCallback@details at Concurrency@@AEAAXPEAX at Z */
+DEFINE_THISCALL_WRAPPER(_ContextCallback__Assign, 8)
+void __thiscall _ContextCallback__Assign(void *this, void *v)
+{
+    TRACE("(%p %p)\n", this, v);
+}
+
+#define call_function_do_call(this) CALL_VTBL_FUNC(this, 8, void, (function_void_cdecl_void*), (this))
+#define call_function_do_clean(this,b) CALL_VTBL_FUNC(this, 16, void, (function_void_cdecl_void*,MSVCP_bool), (this, b))
+/* ?_CallInContext at _ContextCallback@details at Concurrency@@QBEXV?$function@$$A6AXXZ at std@@_N at Z */
+/* ?_CallInContext at _ContextCallback@details at Concurrency@@QEBAXV?$function@$$A6AXXZ at std@@_N at Z */
+DEFINE_THISCALL_WRAPPER(_ContextCallback__CallInContext, 48)
+void __thiscall _ContextCallback__CallInContext(const void *this, function_void_cdecl_void func, MSVCP_bool b)
+{
+    TRACE("(%p %p %x)\n", this, func.func, b);
+    call_function_do_call(func.this);
+    call_function_do_clean(func.this, func.this!=&func);
+}
+
+/* ?_Capture at _ContextCallback@details at Concurrency@@AAEXXZ */
+/* ?_Capture at _ContextCallback@details at Concurrency@@AEAAXXZ */
+DEFINE_THISCALL_WRAPPER(_ContextCallback__Capture, 4)
+void __thiscall _ContextCallback__Capture(void *this)
+{
+    TRACE("(%p)\n", this);
+}
+
+/* ?_Reset at _ContextCallback@details at Concurrency@@AAEXXZ */
+/* ?_Reset at _ContextCallback@details at Concurrency@@AEAAXXZ */
+DEFINE_THISCALL_WRAPPER(_ContextCallback__Reset, 4)
+void __thiscall _ContextCallback__Reset(void *this)
+{
+    TRACE("(%p)\n", this);
+}
+
+/* ?_IsCurrentOriginSTA at _ContextCallback@details at Concurrency@@CA_NXZ */
+MSVCP_bool __cdecl _ContextCallback__IsCurrentOriginSTA(void *this)
+{
+    TRACE("(%p)\n", this);
+    return FALSE;
+}
 #endif




More information about the wine-cvs mailing list