diff options
author | George Hazan <ghazan@miranda.im> | 2023-02-10 19:46:31 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-02-10 19:46:31 +0300 |
commit | a7bf177e6e4aedcaafca186b50e6666788e45f98 (patch) | |
tree | 98b5d4a37a93b5f93eb2399ed38d696dea3c65bd /src/mir_core | |
parent | 2046bf33c966d9db3fbc98c1e067788408751104 (diff) |
ME_DB_EVENT_MARKED_READ: recursion prevention
Diffstat (limited to 'src/mir_core')
-rw-r--r-- | src/mir_core/src/db.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
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)
|