From 8fbb710f69be547c9a1fb45346bbd01db9d23bee Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 19 Sep 2016 11:25:57 +0000 Subject: Chat_AddGroup - even less structures git-svn-id: http://svn.miranda-ng.org/main/trunk@17316 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/mir_app/src/chat_svc.cpp | 31 ++++++++++++++++++------------- src/mir_app/src/chat_tools.cpp | 1 - src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + 4 files changed, 20 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index a5850be128..2e675131e8 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -192,17 +192,17 @@ EXTERN_C MIR_APP_DLL(int) Chat_NewSession(const GCSESSION *gcw) if (gcw == NULL) return GC_NEWSESSION_ERROR; - mir_cslock lck(csChat); + mir_cslockfull lck(csChat); MODULEINFO *mi = chatApi.MM_FindModule(gcw->pszModule); if (mi == NULL) return GC_NEWSESSION_ERROR; - // try to restart a session first SESSION_INFO *si = chatApi.SM_FindSession(gcw->ptszID, gcw->pszModule); if (si != NULL) { chatApi.UM_RemoveAll(&si->pUsers); chatApi.TM_RemoveAll(&si->pStatuses); + lck.unlock(); si->iStatusCount = 0; si->nUsersInNicklist = 0; @@ -217,6 +217,7 @@ EXTERN_C MIR_APP_DLL(int) Chat_NewSession(const GCSESSION *gcw) if ((si = chatApi.SM_AddSession(gcw->ptszID, gcw->pszModule)) == NULL) return GC_NEWSESSION_ERROR; + lck.unlock(); si->pItemData = gcw->pItemData; if (gcw->iType != GCW_SERVER) si->wStatus = ID_STATUS_ONLINE; @@ -410,9 +411,6 @@ static BOOL AddEventToAllMatchingUID(GCEVENT *gce) EXTERN_C MIR_APP_DLL(int) Chat_Event(GCEVENT *gce) { - BOOL bIsHighlighted = FALSE; - BOOL bRemoveFlag = FALSE; - if (gce == NULL) return GC_EVENT_ERROR; @@ -426,16 +424,11 @@ EXTERN_C MIR_APP_DLL(int) Chat_Event(GCEVENT *gce) if (NotifyEventHooks(hHookEvent, 0, LPARAM(gce))) return 1; + BOOL bIsHighlighted = FALSE; + BOOL bRemoveFlag = FALSE; + // Do different things according to type of event switch (gcd->iType) { - case GC_EVENT_ADDGROUP: - { - STATUSINFO *si = chatApi.SM_AddStatus(gcd->ptszID, gcd->pszModule, gce->ptszStatus); - if (si && gce->dwItemData) - si->hIcon = CopyIcon((HICON)gce->dwItemData); - } - return 0; - case GC_EVENT_SETCONTACTSTATUS: return chatApi.SM_SetContactStatus(gcd->ptszID, gcd->pszModule, gce->ptszUID, (WORD)gce->dwItemData); @@ -546,6 +539,18 @@ EXTERN_C MIR_APP_DLL(int) Chat_Event(GCEVENT *gce) ///////////////////////////////////////////////////////////////////////////////////////// // chat control functions +MIR_APP_DLL(int) Chat_AddGroup(const char *szModule, const wchar_t *wszId, const wchar_t *wszText, HICON hIcon) +{ + if (wszText == NULL) + return GC_EVENT_ERROR; + + mir_cslock lck(csChat); + STATUSINFO *si = chatApi.SM_AddStatus(wszId, szModule, wszText); + if (si && hIcon) + si->hIcon = CopyIcon(hIcon); + return 0; +} + MIR_APP_DLL(int) Chat_ChangeSessionName(const char *szModule, const wchar_t *wszId, const wchar_t *wszNewName) { if (wszNewName == NULL) diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp index eb262e1eed..ec3ab03934 100644 --- a/src/mir_app/src/chat_tools.cpp +++ b/src/mir_app/src/chat_tools.cpp @@ -658,7 +658,6 @@ BOOL IsEventSupported(int eventType) case GC_EVENT_ACTION: case GC_EVENT_ADDSTATUS: case GC_EVENT_REMOVESTATUS: - case GC_EVENT_ADDGROUP: case GC_EVENT_SETCONTACTSTATUS: return TRUE; } diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index a72414500f..ae46f64976 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -308,3 +308,4 @@ Chat_SetStatusbarText @308 Chat_SendUserMessage @309 Chat_SetStatusEx @310 Chat_Terminate @311 +Chat_AddGroup @312 diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index e3d58e4aa3..6914577fc2 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -308,3 +308,4 @@ Chat_SetStatusbarText @308 Chat_SendUserMessage @309 Chat_SetStatusEx @310 Chat_Terminate @311 +Chat_AddGroup @312 -- cgit v1.2.3