From 556d6a85c9d5f4e2d29b94526689568b4081c006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Mon, 1 Dec 2014 22:24:48 +0000 Subject: Facebook: Optimize marking chat messages as read Not mark as read every single message when loading history messages. git-svn-id: http://svn.miranda-ng.org/main/trunk@11206 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/FacebookRM/src/proto.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'protocols/FacebookRM/src/proto.cpp') diff --git a/protocols/FacebookRM/src/proto.cpp b/protocols/FacebookRM/src/proto.cpp index b10a5821b5..a5443be932 100644 --- a/protocols/FacebookRM/src/proto.cpp +++ b/protocols/FacebookRM/src/proto.cpp @@ -538,17 +538,16 @@ INT_PTR FacebookProto::OnMind(WPARAM wParam, LPARAM lParam) int FacebookProto::OnDbEventRead(WPARAM contactID, LPARAM dbei) { - std::map::iterator it = facy.ignore_read.find(contactID); - if (it != facy.ignore_read.end()) { - if (it->second) // it's TRUE, so we ignore this - return 0; - else // it's FALSE, so we just remove it from list - facy.ignore_read.erase(it); - } + if (isOffline() || !IsMyContact(contactID, false)) // ignore chats + return 0; - if ((IsMyContact(contactID, true)) && !isOffline()) { - ForkThread(&FacebookProto::ReadMessageWorker, (void*)contactID); - } + if (facy.ignore_read.find(contactID) != facy.ignore_read.end()) + return 0; // it's there, so we ignore this + + std::set *hContacts = new std::set(); + hContacts->insert(contactID); + + ForkThread(&FacebookProto::ReadMessageWorker, (void*)hContacts); return 0; } -- cgit v1.2.3