msvcp140: Add _Cnd_init_in_situ implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f41466261d
commit
61e6e8baa0
|
@ -3626,7 +3626,7 @@
|
||||||
@ stub _Cnd_destroy_in_situ
|
@ stub _Cnd_destroy_in_situ
|
||||||
@ stub _Cnd_do_broadcast_at_thread_exit
|
@ stub _Cnd_do_broadcast_at_thread_exit
|
||||||
@ cdecl _Cnd_init(ptr) _Cnd_init
|
@ cdecl _Cnd_init(ptr) _Cnd_init
|
||||||
@ stub _Cnd_init_in_situ
|
@ cdecl _Cnd_init_in_situ(ptr)
|
||||||
@ stub _Cnd_register_at_thread_exit
|
@ stub _Cnd_register_at_thread_exit
|
||||||
@ cdecl _Cnd_signal(ptr) _Cnd_signal
|
@ cdecl _Cnd_signal(ptr) _Cnd_signal
|
||||||
@ cdecl _Cnd_timedwait(ptr ptr ptr) _Cnd_timedwait
|
@ cdecl _Cnd_timedwait(ptr ptr ptr) _Cnd_timedwait
|
||||||
|
|
|
@ -584,10 +584,9 @@ typedef _Cnd_t *_Cnd_arg_t;
|
||||||
|
|
||||||
static HANDLE keyed_event;
|
static HANDLE keyed_event;
|
||||||
|
|
||||||
int __cdecl _Cnd_init(_Cnd_t *cnd)
|
void __cdecl _Cnd_init_in_situ(_Cnd_t cnd)
|
||||||
{
|
{
|
||||||
*cnd = MSVCRT_operator_new(sizeof(**cnd));
|
InitializeConditionVariable(&cnd->cv);
|
||||||
InitializeConditionVariable(&(*cnd)->cv);
|
|
||||||
|
|
||||||
if(!keyed_event) {
|
if(!keyed_event) {
|
||||||
HANDLE event;
|
HANDLE event;
|
||||||
|
@ -596,7 +595,12 @@ int __cdecl _Cnd_init(_Cnd_t *cnd)
|
||||||
if(InterlockedCompareExchangePointer(&keyed_event, event, NULL) != NULL)
|
if(InterlockedCompareExchangePointer(&keyed_event, event, NULL) != NULL)
|
||||||
NtClose(event);
|
NtClose(event);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int __cdecl _Cnd_init(_Cnd_t *cnd)
|
||||||
|
{
|
||||||
|
*cnd = MSVCRT_operator_new(sizeof(**cnd));
|
||||||
|
_Cnd_init_in_situ(*cnd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue