| @@ -59,10 +59,12 @@ struct TtsEngine | |||
| WAVEFORMATEX **format); | |||
| private: | |||
| ULONG refCount; | |||
| ISpObjectToken *objectToken; | |||
| }; | |||
| TtsEngine::TtsEngine() | |||
| : refCount(1) | |||
| , objectToken(NULL) | |||
| { | |||
| InterlockedIncrement(&ObjectCount); | |||
| } | |||
| @@ -70,6 +72,8 @@ TtsEngine::TtsEngine() | |||
| TtsEngine::~TtsEngine() | |||
| { | |||
| InterlockedDecrement(&ObjectCount); | |||
| if (objectToken) | |||
| objectToken->Release(); | |||
| } | |||
| ULONG __stdcall TtsEngine::AddRef() | |||
| @@ -101,12 +105,23 @@ HRESULT __stdcall TtsEngine::QueryInterface(REFIID iid, void **object) | |||
| HRESULT __stdcall TtsEngine::GetObjectToken(ISpObjectToken **token) | |||
| { | |||
| return E_NOTIMPL; | |||
| if (!token) | |||
| return E_POINTER; | |||
| *token = objectToken; | |||
| if (objectToken) | |||
| objectToken->AddRef(); | |||
| return S_OK; | |||
| } | |||
| HRESULT __stdcall TtsEngine::SetObjectToken(ISpObjectToken *token) | |||
| { | |||
| return E_NOTIMPL; | |||
| if (objectToken) | |||
| objectToken->Release(); | |||
| objectToken = token; | |||
| if (objectToken) | |||
| objectToken->AddRef(); | |||
| return S_OK; | |||
| } | |||
| HRESULT __stdcall | |||