1、修复主控端CTalkDlg的内存泄漏问题,被控端即时消息对话框置于顶层。 2、SAFE_DELETE(ContextObject->olps)有崩溃概率。改为主控端退出时先令被控端退出,就没有内存泄漏。 3、开关音频时偶有内存泄漏,waveInCallBack线程不能正常退出。
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
// Manager.cpp: implementation of the CManager class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "Manager.h"
|
|
#include "IOCPClient.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CManager::CManager(IOCPClient* ClientObject)
|
|
{
|
|
m_bIsDead = false;
|
|
m_ClientObject = ClientObject;
|
|
m_ClientObject->setManagerCallBack(this);
|
|
|
|
m_hEventDlgOpen = CreateEvent(NULL,TRUE,FALSE,NULL);
|
|
}
|
|
|
|
CManager::~CManager()
|
|
{
|
|
if (m_hEventDlgOpen!=NULL)
|
|
{
|
|
CloseHandle(m_hEventDlgOpen);
|
|
m_hEventDlgOpen = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
int CManager::Send(LPBYTE lpData, UINT nSize)
|
|
{
|
|
int nRet = 0;
|
|
try
|
|
{
|
|
nRet = m_ClientObject->OnServerSending((char*)lpData, nSize);
|
|
}catch(...){};
|
|
return nRet;
|
|
}
|
|
|
|
VOID CManager::WaitForDialogOpen()
|
|
{
|
|
WaitForSingleObject(m_hEventDlgOpen, INFINITE);
|
|
//必须的Sleep,因为远程窗口从InitDialog中发送COMMAND_NEXT到显示还要一段时间
|
|
Sleep(150);
|
|
}
|
|
|
|
VOID CManager::NotifyDialogIsOpen()
|
|
{
|
|
SetEvent(m_hEventDlgOpen);
|
|
}
|