[PATCH 0/3] MR6454: msvcrt: Some FIXME once stuff.
CLIP STUDIO PAINT spams FIXMEs for these functions when starting up. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6454
From: Aida Jonikienė <aidas957(a)gmail.com> --- dlls/msvcrt/concurrency.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index 39059d66b38..d9639d1078e 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -1557,10 +1557,12 @@ DEFINE_THISCALL_WRAPPER(ThreadScheduler_ScheduleTask_loc, 16) void __thiscall ThreadScheduler_ScheduleTask_loc(ThreadScheduler *this, void (__cdecl *proc)(void*), void* data, /*location*/void *placement) { + static unsigned int once; schedule_task_arg *arg; TP_WORK *work; - FIXME("(%p %p %p %p) stub\n", this, proc, data, placement); + if(!once++) + FIXME("(%p %p %p %p) semi-stub\n", this, proc, data, placement); arg = operator_new(sizeof(*arg)); arg->proc = proc; @@ -1586,7 +1588,7 @@ DEFINE_THISCALL_WRAPPER(ThreadScheduler_ScheduleTask, 12) void __thiscall ThreadScheduler_ScheduleTask(ThreadScheduler *this, void (__cdecl *proc)(void*), void* data) { - FIXME("(%p %p %p) stub\n", this, proc, data); + TRACE("(%p %p %p)\n", this, proc, data); ThreadScheduler_ScheduleTask_loc(this, proc, data, NULL); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6454
From: Aida Jonikienė <aidas957(a)gmail.com> --- dlls/msvcrt/concurrency.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index d9639d1078e..dc030b359da 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -2094,7 +2094,11 @@ _StructuredTaskCollection* __thiscall _StructuredTaskCollection_ctor( DEFINE_THISCALL_WRAPPER(_StructuredTaskCollection_dtor, 4) void __thiscall _StructuredTaskCollection_dtor(_StructuredTaskCollection *this) { - FIXME("(%p): stub!\n", this); + static unsigned int once; + + if (!once++) + FIXME("(%p): stub!\n", this); + if (this->count && !__uncaught_exception()) { missing_wait e; missing_wait_ctor_str(&e, "Missing call to _RunAndWait"); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6454
From: Aida Jonikienė <aidas957(a)gmail.com> --- dlls/msvcrt/concurrency.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index dc030b359da..769f0153d8a 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -861,7 +861,10 @@ void __cdecl Context_Block(void) /* ?_Yield(a)_Context@details(a)Concurrency@@SAXXZ */ void __cdecl Context_Yield(void) { - FIXME("()\n"); + static unsigned int once; + + if (!once++) + FIXME("()\n"); } /* ?_SpinYield(a)Context@Concurrency@@SAXXZ */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6454
Piotr Caban (@piotr) commented about dlls/msvcrt/concurrency.c:
void __thiscall ThreadScheduler_ScheduleTask_loc(ThreadScheduler *this, void (__cdecl *proc)(void*), void* data, /*location*/void *placement) { + static unsigned int once; schedule_task_arg *arg; TP_WORK *work;
- FIXME("(%p %p %p %p) stub\n", this, proc, data, placement); + if(!once++) + FIXME("(%p %p %p %p) semi-stub\n", this, proc, data, placement); It's a useful trace, please change it to something like: `if(!once++) FIXME(...) else TRACE(...)`.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/6454#note_81360
Piotr Caban (@piotr) commented about dlls/msvcrt/concurrency.c:
DEFINE_THISCALL_WRAPPER(_StructuredTaskCollection_dtor, 4) void __thiscall _StructuredTaskCollection_dtor(_StructuredTaskCollection *this) { - FIXME("(%p): stub!\n", this); + static unsigned int once; + + if (!once++) + FIXME("(%p): stub!\n", this); + if (this->count && !__uncaught_exception()) { missing_wait e; missing_wait_ctor_str(&e, "Missing call to _RunAndWait");
void __thiscall _StructuredTaskCollection_dtor(_StructuredTaskCollection *this)
{
TRACE("(%p)\n", this);
if (this->count && !__uncaught_exception()) {
missing_wait e;
WARN("missing call to _RunAndWait\n");
missing_wait_ctor_str(&e, "Missing call to _RunAndWait");
The function looks implemented. AFAIR it was not really tested what happens in error case - hence the WARN message. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6454#note_81361
participants (2)
-
Aida Jonikienė -
Piotr Caban (@piotr)