示例#1
0
static void CleanConnections (TYP_LIST *hList)
{
	unsigned int i;
	CONNINST *hInst;

	for (i=0; i<List_Count(hList); i++)
	{
		hInst = List_ElementAt (hList, i);
		if (hInst->hThread == 0)
		{
			free (List_RemoveElementAt(hList, i));
			i--;
		}
	}
}
示例#2
0
static void CleanConnections (TYP_LIST *hList)
{
	unsigned int i;
	CONNINST *pInst;

	for (i=0; i<List_Count(hList); i++)
	{
		pInst = List_ElementAt (hList, i);
		if (!IsWindow (pInst->hWnd))
		{
			if (pInst->hInst) FreeConnection(pInst);
			free (List_RemoveElementAt(hList, i));
			i--;
		}
	}
}
示例#3
0
BOOL AvatarList_Remove(TYP_LIST *hList, AVATARENTRY *pEntry)
{
	AVATARENTRY *pListEntry;
	int i, nCount;

	for (i=0, nCount=List_Count(hList); i<nCount; i++)
	{
		pListEntry = List_ElementAt (hList, i);
		if (pListEntry == pEntry) break;
	}
	if (i<nCount)
	{
		AvatarList_FreeEntry (pEntry);
		List_RemoveElementAt(hList, i);
		free (pEntry);
		return TRUE;
	}
	return FALSE;
}
示例#4
0
void MsgList_CollectGarbage(void)
{
	unsigned int i;
	TYP_MSGLENTRY *pEntry;
	time_t t;

	if (!m_hMsgList) return;
	time(&t);
	t-=MSGLIST_TIMEOUT;
	for (i=0; i<List_Count(m_hMsgList); i++)
	{
		pEntry = List_ElementAt (m_hMsgList, i);
		if (pEntry->t < t)
		{
			LOG (("MsgList_CollectGarbage throwing out msg %d", pEntry->uMsgNum));
			HeapFree (GetProcessHeap(), 0, List_RemoveElementAt (m_hMsgList, i));
			i--;
		}
	}
}
示例#5
0
void *List_Pop (TYP_LIST *pstHandle)
{
	if (pstHandle->uiCount)
		return List_RemoveElementAt(pstHandle ,pstHandle->uiCount-1);
	else return NULL;
}