主控端退出时被控端也退出
1、修复主控端CTalkDlg的内存泄漏问题,被控端即时消息对话框置于顶层。 2、SAFE_DELETE(ContextObject->olps)有崩溃概率。改为主控端退出时先令被控端退出,就没有内存泄漏。 3、开关音频时偶有内存泄漏,waveInCallBack线程不能正常退出。
This commit is contained in:
@@ -575,6 +575,15 @@ void CMy2015RemoteDlg::OnClose()
|
||||
Shell_NotifyIcon(NIM_DELETE, &m_Nid);
|
||||
#endif
|
||||
|
||||
BYTE bToken = COMMAND_BYE;
|
||||
int n = m_CList_Online.GetItemCount();
|
||||
for(int Pos = 0; Pos < n; ++Pos)
|
||||
{
|
||||
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(Pos);
|
||||
m_iocpServer->OnClientPreSending(ContextObject, &bToken, sizeof(BYTE));
|
||||
}
|
||||
Sleep(200);
|
||||
|
||||
EnterCriticalSection(&m_cs);
|
||||
for (std::vector<CFileManagerDlg *>::iterator iter = v_FileDlg.begin();
|
||||
iter != v_FileDlg.end(); ++iter)
|
||||
@@ -598,7 +607,7 @@ void CMy2015RemoteDlg::OnClose()
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Sleep<65><70><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ⲻ<EFBFBD><E2B2BB><EFBFBD>˳<EFBFBD>ʱ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IOCP<43><50>Ҫ<EFBFBD><D2AA><EFBFBD>ظ<EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
|
||||
ShowWindow(SW_HIDE);
|
||||
Sleep(500);
|
||||
Sleep(300);
|
||||
|
||||
if (m_iocpServer!=NULL)
|
||||
{
|
||||
@@ -739,9 +748,9 @@ void CMy2015RemoteDlg::OnOnlineBuildClient()
|
||||
VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
|
||||
{
|
||||
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition(); //1[pcontext client] 2 3 //1 2
|
||||
while(Pos)
|
||||
while(Pos)
|
||||
{
|
||||
int iItem = m_CList_Online.GetNextSelectedItem(Pos);
|
||||
int iItem = m_CList_Online.GetNextSelectedItem(Pos);
|
||||
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(iItem); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ŀ<EFBFBD><C4BF>ȡ<EFBFBD><C8A1>ClientContext<78>ṹ<EFBFBD><E1B9B9>
|
||||
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ݰ<EFBFBD> //<2F>鿴ClientContext<78>ṹ<EFBFBD><E1B9B9>
|
||||
@@ -1061,6 +1070,12 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch(p->v1)
|
||||
{
|
||||
case TALK_DLG:
|
||||
{
|
||||
CTalkDlg *Dlg = (CTalkDlg*)p->hDlg;
|
||||
delete Dlg;
|
||||
break;
|
||||
}
|
||||
case VIDEO_DLG:
|
||||
{
|
||||
CVideoDlg *Dlg = (CVideoDlg*)p->hDlg;
|
||||
|
||||
@@ -98,7 +98,8 @@ IOCPServer::~IOCPServer(void)
|
||||
while (!m_ContextFreePoolList.IsEmpty())
|
||||
{
|
||||
CONTEXT_OBJECT *ContextObject = m_ContextFreePoolList.RemoveHead();
|
||||
SAFE_DELETE(ContextObject->olps);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>2019.1.14
|
||||
//SAFE_DELETE(ContextObject->olps);
|
||||
delete ContextObject;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ BOOL CTalkDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
|
||||
SetIcon(m_hIcon, FALSE);
|
||||
BYTE bToken = COMMAND_NEXT;
|
||||
m_iocpServer->OnClientPreSending(m_ContextObject, &bToken, sizeof(BYTE));
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ public:
|
||||
enum { IDD = IDD_DIALOG_TALK };
|
||||
CONTEXT_OBJECT* m_ContextObject;
|
||||
IOCPServer* m_iocpServer;
|
||||
HICON m_hIcon;
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user