summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-02-22 16:02:21 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-02-22 16:02:30 +0300
commit061a20a9cf305cf5fabe2a35b7d8a86eb8d6b154 (patch)
tree2c1ca35277c268e52fc4bee3197e1cd0ef16ff16 /src
parent2f71af700ac7b4077aa6734064376aed11fa6c4e (diff)
fictive functions removed
Diffstat (limited to 'src')
-rw-r--r--src/mir_app/src/chat.h3
-rw-r--r--src/mir_app/src/chat_manager.cpp24
-rw-r--r--src/mir_app/src/chat_svc.cpp17
3 files changed, 16 insertions, 28 deletions
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h
index a128e612be..d36a72af71 100644
--- a/src/mir_app/src/chat.h
+++ b/src/mir_app/src/chat.h
@@ -68,11 +68,10 @@ MODULEINFO* MM_FindModule(const char *pszModule);
BOOL SM_AddEvent(SESSION_INFO *si, GCEVENT *gce, bool bIsHighlighted);
BOOL SM_ChangeNick(SESSION_INFO *si, GCEVENT *gce);
+void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false);
char* SM_GetUsers(SESSION_INFO *si);
BOOL SM_GiveStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszStatus);
void SM_RemoveAll(void);
-int SM_RemoveModule(const char *pszModule, bool removeContact);
-int SM_RemoveSession(SESSION_INFO *si, bool removeContact);
BOOL SM_RemoveUser(SESSION_INFO *si, const wchar_t *pszUID);
BOOL SM_SetContactStatus(SESSION_INFO *si, const wchar_t *pszUID, uint16_t wStatus);
BOOL SM_SetOffline(const char *pszModule, SESSION_INFO *si);
diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp
index 74b3fa2a64..dc6e7aaa1b 100644
--- a/src/mir_app/src/chat_manager.cpp
+++ b/src/mir_app/src/chat_manager.cpp
@@ -163,7 +163,7 @@ static SESSION_INFO* SM_CreateSession(void)
return new SESSION_INFO();
}
-static void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false)
+void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact)
{
if (g_clistApi.pfnGetEvent(si->hContact, 0))
g_clistApi.pfnRemoveEvent(si->hContact, GC_FAKE_EVENT);
@@ -201,28 +201,6 @@ static void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false)
delete si;
}
-int SM_RemoveModule(const char *pszModule, bool removeContact)
-{
- if (pszModule == nullptr)
- return FALSE;
-
- for (auto &si : g_arSessions.rev_iter())
- if (si->iType != GCW_SERVER && !mir_strcmpi(si->pszModule, pszModule))
- SM_FreeSession(g_arSessions.removeItem(&si), removeContact);
-
- return TRUE;
-}
-
-int SM_RemoveSession(SESSION_INFO *si, bool removeContact)
-{
- if (si == nullptr)
- return FALSE;
-
- g_arSessions.remove(si);
- SM_FreeSession(si, removeContact);
- return TRUE;
-}
-
MIR_APP_DLL(SESSION_INFO*) Chat_Find(const wchar_t *pszID, const char *pszModule)
{
if (!pszID || !pszModule)
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp
index a1bf16f53c..0731fb09b4 100644
--- a/src/mir_app/src/chat_svc.cpp
+++ b/src/mir_app/src/chat_svc.cpp
@@ -379,9 +379,20 @@ struct ChatTerminateParam
static INT_PTR __stdcall stubRoomTerminate(void *param)
{
ChatTerminateParam *p = (ChatTerminateParam*)param;
- if (p->si)
- return SM_RemoveSession(p->si, p->bRemoveContact);
- return SM_RemoveModule(p->pszModule, p->bRemoveContact);
+ if (p->si) {
+ g_arSessions.remove(p->si);
+ SM_FreeSession(p->si, p->bRemoveContact);
+ }
+ else {
+ if (p->pszModule == nullptr)
+ return FALSE;
+
+ // remove all sessions with matching module name
+ for (auto &si : g_arSessions.rev_iter())
+ if (si->iType != GCW_SERVER && !mir_strcmpi(si->pszModule, p->pszModule))
+ SM_FreeSession(g_arSessions.removeItem(&si), p->bRemoveContact);
+ }
+ return TRUE;
}
MIR_APP_DLL(int) Chat_Terminate(const char *szModule, bool bRemoveContact)