sm_dump_handles now shows memory usage
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401772
This commit is contained in:
@@ -87,6 +87,29 @@ TopMenu::~TopMenu()
|
||||
delete [] m_clients;
|
||||
}
|
||||
|
||||
unsigned int TopMenu::CalcMemUsage()
|
||||
{
|
||||
unsigned int size = sizeof(TopMenu);
|
||||
|
||||
size += m_Config.strings.GetMemTable()->MemUsage();
|
||||
size += (m_Config.cats.size() * sizeof(int));
|
||||
size += (sizeof(topmenu_player_t) * m_max_clients);
|
||||
size += (m_SortedCats.size() * sizeof(unsigned int));
|
||||
size += (m_UnsortedCats.size() * sizeof(unsigned int));
|
||||
size += (m_Categories.size() * (sizeof(topmenu_category_t *) + sizeof(topmenu_category_t)));
|
||||
size += (m_Objects.size() * (sizeof(topmenu_object_t *) + sizeof(topmenu_object_t)));
|
||||
size += m_ObjLookup.mem_usage();
|
||||
|
||||
for (size_t i = 0; i < m_Categories.size(); i++)
|
||||
{
|
||||
size += m_Categories[i]->obj_list.size() * sizeof(topmenu_object_t *);
|
||||
size += m_Categories[i]->sorted.size() * sizeof(topmenu_object_t *);
|
||||
size += m_Categories[i]->unsorted.size() * sizeof(topmenu_object_t *);
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
void TopMenu::OnClientConnected(int client)
|
||||
{
|
||||
if (m_clients == NULL)
|
||||
|
||||
@@ -146,6 +146,8 @@ public: //ITextListener_SMC
|
||||
SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
|
||||
SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
|
||||
SMCResult ReadSMC_LeavingSection(const SMCStates *states);
|
||||
public:
|
||||
unsigned int CalcMemUsage();
|
||||
private:
|
||||
void SortCategoriesIfNeeded();
|
||||
void SortCategoryIfNeeded(unsigned int category);
|
||||
|
||||
@@ -58,6 +58,10 @@ public:
|
||||
*/
|
||||
void Reset();
|
||||
|
||||
inline unsigned int MemUsage()
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
private:
|
||||
unsigned char *membase;
|
||||
|
||||
@@ -43,6 +43,11 @@ public:
|
||||
ITopMenu *pTopMenu = (ITopMenu *)object;
|
||||
g_TopMenus.DestroyTopMenu(pTopMenu);
|
||||
}
|
||||
bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
|
||||
{
|
||||
*pSize = ((TopMenu *)object)->CalcMemUsage();
|
||||
return true;
|
||||
}
|
||||
} s_TopMenuHandle;
|
||||
|
||||
void Initialize_Natives()
|
||||
|
||||
Reference in New Issue
Block a user