From 3dc0d9b0b7c30ea2f77d74c4ce5b6ccd67bd525c Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Tue, 9 Apr 2013 21:40:22 +0000
Subject: - the kernel filters out contacts by proto names much faster than a
 plugin; - database cycles simplified

git-svn-id: http://svn.miranda-ng.org/main/trunk@4404 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 protocols/MSN/src/msn_lists.cpp | 32 ++++++++++++--------------------
 protocols/MSN/src/msn_proto.cpp | 12 +++++-------
 2 files changed, 17 insertions(+), 27 deletions(-)

(limited to 'protocols/MSN')

diff --git a/protocols/MSN/src/msn_lists.cpp b/protocols/MSN/src/msn_lists.cpp
index 74961195f7..1f6134e2b7 100644
--- a/protocols/MSN/src/msn_lists.cpp
+++ b/protocols/MSN/src/msn_lists.cpp
@@ -238,27 +238,19 @@ void  CMsnProto::Lists_Remove(int list, const char* email)
 
 void  CMsnProto::Lists_Populate(void)
 {
-	HANDLE hContact = db_find_first();
-	while (hContact != NULL)
-	{
-		HANDLE hContactN = db_find_next(hContact);
-		if (MSN_IsMyContact(hContact))
-		{
-			char szEmail[MSN_MAX_EMAIL_LEN] = "";;
-			if (getStaticString(hContact, "wlid", szEmail, sizeof(szEmail)))
-				getStaticString(hContact, "e-mail", szEmail, sizeof(szEmail));
-
-			if (szEmail[0])
-			{
-				bool localList = getByte(hContact, "LocalList", 0) != 0;
-				if (localList)
-					Lists_Add(LIST_LL, NETID_MSN, szEmail, hContact);
-				else
-					Lists_Add(0, NETID_UNKNOWN, szEmail, hContact);
-			}
-			else CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0);
+	for (HANDLE hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) {
+		char szEmail[MSN_MAX_EMAIL_LEN] = "";;
+		if (getStaticString(hContact, "wlid", szEmail, sizeof(szEmail)))
+			getStaticString(hContact, "e-mail", szEmail, sizeof(szEmail));
+
+		if (szEmail[0]) {
+			bool localList = getByte(hContact, "LocalList", 0) != 0;
+			if (localList)
+				Lists_Add(LIST_LL, NETID_MSN, szEmail, hContact);
+			else
+				Lists_Add(0, NETID_UNKNOWN, szEmail, hContact);
 		}
-		hContact = hContactN;
+		else CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0);
 	}
 }
 
diff --git a/protocols/MSN/src/msn_proto.cpp b/protocols/MSN/src/msn_proto.cpp
index a9da564cf3..e2b1cf2763 100644
--- a/protocols/MSN/src/msn_proto.cpp
+++ b/protocols/MSN/src/msn_proto.cpp
@@ -92,13 +92,11 @@ CMsnProto::CMsnProto(const char* aProtoName, const TCHAR* aUserName) :
 
 	LoadOptions();
 
-	for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) {
-		if (MSN_IsMyContact(hContact)) {
-			deleteSetting(hContact, "Status");
-			deleteSetting(hContact, "IdleTS");
-			deleteSetting(hContact, "p2pMsgId");
-			deleteSetting(hContact, "AccList");
-		}
+	for (HANDLE hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) {
+		deleteSetting(hContact, "Status");
+		deleteSetting(hContact, "IdleTS");
+		deleteSetting(hContact, "p2pMsgId");
+		deleteSetting(hContact, "AccList");
 	}
 	deleteSetting(NULL, "MobileEnabled");
 	deleteSetting(NULL, "MobileAllowed");
-- 
cgit v1.2.3