From a1cc2175f61db72a71b26c5be3787f977c021cfb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 2 Apr 2014 11:04:09 +0000 Subject: DBEVENTINFO::isMarkRead() - new helper to simplify bit logic git-svn-id: http://svn.miranda-ng.org/main/trunk@8825 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db3x_mmap/src/dbevents.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'plugins/Db3x_mmap') diff --git a/plugins/Db3x_mmap/src/dbevents.cpp b/plugins/Db3x_mmap/src/dbevents.cpp index 81fbfa1f9d..66dded5f16 100644 --- a/plugins/Db3x_mmap/src/dbevents.cpp +++ b/plugins/Db3x_mmap/src/dbevents.cpp @@ -291,8 +291,18 @@ STDMETHODIMP_(BOOL) CDb3Mmap::GetEvent(HANDLE hDbEvent, DBEVENTINFO *dbei) STDMETHODIMP_(BOOL) CDb3Mmap::MarkEventRead(MCONTACT contactID, HANDLE hDbEvent) { + DBCachedContact *cc; + if (contactID) { + if ((cc = m_cache->GetCachedContact(contactID)) == NULL) + return -1; + if (cc->IsSub()) + if ((cc = m_cache->GetCachedContact(cc->parentID)) == NULL) + return -1; + } + else cc = NULL; + mir_cslockfull lck(m_csDbAccess); - DWORD ofsContact = GetContactOffset(contactID); + DWORD ofsContact = (cc) ? cc->dwDriverData : m_dbHeader.ofsUser; DBContact dbc = *(DBContact*)DBRead(ofsContact, sizeof(DBContact), NULL); DBEvent *dbe = (DBEvent*)DBRead((DWORD)hDbEvent, sizeof(DBEvent), NULL); if (dbe->signature != DBEVENT_SIGNATURE || dbc.signature != DBCONTACT_SIGNATURE) -- cgit v1.2.3