summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-02-10 19:46:31 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-02-10 19:46:31 +0300
commita7bf177e6e4aedcaafca186b50e6666788e45f98 (patch)
tree98b5d4a37a93b5f93eb2399ed38d696dea3c65bd /src
parent2046bf33c966d9db3fbc98c1e067788408751104 (diff)
ME_DB_EVENT_MARKED_READ: recursion prevention
Diffstat (limited to 'src')
-rw-r--r--src/mir_app/src/mir_app.def1
-rw-r--r--src/mir_app/src/mir_app64.def1
-rw-r--r--src/mir_app/src/proto_interface.cpp3
-rw-r--r--src/mir_core/src/db.cpp12
4 files changed, 15 insertions, 2 deletions
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index 81f0512e7f..208d93904c 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -818,3 +818,4 @@ Srmm_CreateHotkey @886 NONAME
?Chat_Terminate@@YGHPBD_N@Z @933 NONAME
?Chat_Control@@YGHPBDH@Z @934 NONAME
?UpdateChatLog@CSrmmBaseDialog@@IAEXXZ @935 NONAME
+?OnMarkRead@PROTO_INTERFACE@@UAEXII@Z @936 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def
index 901fc10164..451d75680a 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -818,3 +818,4 @@ Srmm_CreateHotkey @886 NONAME
?Chat_Terminate@@YAHPEBD_N@Z @933 NONAME
?Chat_Control@@YAHPEBDH@Z @934 NONAME
?UpdateChatLog@CSrmmBaseDialog@@IEAAXXZ @935 NONAME
+?OnMarkRead@PROTO_INTERFACE@@UEAAXII@Z @936 NONAME
diff --git a/src/mir_app/src/proto_interface.cpp b/src/mir_app/src/proto_interface.cpp
index 801442d8fa..96c155a9a9 100644
--- a/src/mir_app/src/proto_interface.cpp
+++ b/src/mir_app/src/proto_interface.cpp
@@ -80,6 +80,9 @@ void PROTO_INTERFACE::OnEventEdited(MCONTACT, MEVENT)
void PROTO_INTERFACE::OnErase()
{}
+void PROTO_INTERFACE::OnMarkRead(MCONTACT, MEVENT)
+{}
+
void PROTO_INTERFACE::OnModulesLoaded()
{}
diff --git a/src/mir_core/src/db.cpp b/src/mir_core/src/db.cpp
index 23584d2fb1..63afe4d66b 100644
--- a/src/mir_core/src/db.cpp
+++ b/src/mir_core/src/db.cpp
@@ -440,9 +440,17 @@ MIR_CORE_DLL(MEVENT) db_event_last(MCONTACT hContact)
return (g_pCurrDb == nullptr) ? 0 : g_pCurrDb->FindLastEvent(hContact);
}
-MIR_CORE_DLL(int) db_event_markRead(MCONTACT hContact, MEVENT hDbEvent)
+MIR_CORE_DLL(int) db_event_markRead(MCONTACT hContact, MEVENT hDbEvent, bool bFromServer)
{
- return (g_pCurrDb == nullptr) ? 0 : g_pCurrDb->MarkEventRead(hContact, hDbEvent);
+ if (g_pCurrDb == nullptr)
+ return 0;
+
+ if (!g_pCurrDb->MarkEventRead(hContact, hDbEvent))
+ return 0;
+
+ if (!bFromServer)
+ if (auto *ppro = Proto_GetInstance(hContact))
+ ppro->OnMarkRead(hContact, hDbEvent);
}
MIR_CORE_DLL(MEVENT) db_event_next(MCONTACT hContact, MEVENT hDbEvent)