Module: wine Branch: master Commit: 4fd4a8aeb35d5ce73aa21f4699557ab899049fb4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4fd4a8aeb35d5ce73aa21f4699...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Aug 24 14:39:12 2011 +0200
msvcp90: Added basic_streambuf<char>::{Lock, Unlock} implementation.
---
dlls/msvcp90/ios.c | 9 +++++++-- dlls/msvcp90/msvcp90.h | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index eef506a..84dfb17 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -923,6 +923,7 @@ basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_s { TRACE("(%p %d)\n", this, uninitialized); this->vtable = &MSVCP_basic_streambuf_char_vtable; + mutex_ctor(&this->lock); return this; }
@@ -934,6 +935,7 @@ basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char TRACE("(%p)\n", this);
this->vtable = &MSVCP_basic_streambuf_char_vtable; + mutex_ctor(&this->lock); this->loc = MSVCRT_operator_new(sizeof(locale)); locale_ctor(this->loc); basic_streambuf_char__Init_empty(this); @@ -948,6 +950,7 @@ void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this) { TRACE("(%p)\n", this);
+ mutex_dtor(&this->lock); locale_dtor(this->loc); MSVCRT_operator_delete(this->loc); } @@ -1051,7 +1054,8 @@ void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this) DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4) void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); + TRACE("(%p)\n", this); + mutex_lock(&this->lock); }
/* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ @@ -1087,7 +1091,8 @@ streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4) void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); + TRACE("(%p)\n", this); + mutex_unlock(&this->lock); }
/* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */ diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index d80c361..7c331b5 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -218,3 +218,8 @@ void __thiscall _Lockit_dtor(_Lockit*); typedef struct { void *mutex; } mutex; + +mutex* __thiscall mutex_ctor(mutex*); +void __thiscall mutex_dtor(mutex*); +void __thiscall mutex_lock(mutex*); +void __thiscall mutex_unlock(mutex*);