void ReloadSkinItemsToCache() { for (int i = 0; i < cfg::arCache.getCount(); i++) { TExtraCache *p = cfg::arCache[i]; LoadSkinItemToCache(p); } }
int cfg::getCache(const HANDLE hContact, const char *szProto) { int i, iFound = -1; for(i = 0; i < nextCacheEntry; i++) { if(eCache[i].hContact == hContact) { iFound = i; break; } } if(iFound == -1) { EnterCriticalSection(&cachecs); if(nextCacheEntry == maxCacheEntry) { maxCacheEntry += 100; cfg::eCache = (TExtraCache *)realloc(cfg::eCache, maxCacheEntry * sizeof(TExtraCache)); } memset(&cfg::eCache[nextCacheEntry], 0, sizeof(TExtraCache)); cfg::eCache[nextCacheEntry].hContact = hContact; memset(cfg::eCache[nextCacheEntry].iExtraImage, 0xff, MAXEXTRACOLUMNS); cfg::eCache[nextCacheEntry].iExtraValid = 0; cfg::eCache[nextCacheEntry].valid = FALSE; cfg::eCache[nextCacheEntry].bStatusMsgValid = 0; cfg::eCache[nextCacheEntry].statusMsg = NULL; cfg::eCache[nextCacheEntry].status_item = NULL; LoadSkinItemToCache(&cfg::eCache[nextCacheEntry], szProto); cfg::eCache[nextCacheEntry].dwCFlags = 0; cfg::eCache[nextCacheEntry].dwDFlags = DBGetContactSettingDword(hContact, "CList", "CLN_Flags", 0); cfg::eCache[nextCacheEntry].dwXMask = CalcXMask(hContact); GetCachedStatusMsg(nextCacheEntry, const_cast<char *>(szProto)); cfg::eCache[nextCacheEntry].dwLastMsgTime = INTSORT_GetLastMsgTime(hContact); iFound = nextCacheEntry++; LeaveCriticalSection(&cachecs); } return iFound; }
void ReloadSkinItemsToCache() { for (int i = 0; i < cfg::arCache.getCount(); i++) { TExtraCache *p = cfg::arCache[i]; char *szProto = GetContactProto(p->hContact); if (szProto) LoadSkinItemToCache(p, szProto); } }
TExtraCache* cfg::getCache(const MCONTACT hContact, const char *szProto) { int idx = cfg::arCache.getIndex((TExtraCache*)&hContact); if (idx != -1) return cfg::arCache[idx]; mir_cslock lck(cachecs); TExtraCache *p = (TExtraCache*)calloc(sizeof(TExtraCache), 1); p->hContact = hContact; LoadSkinItemToCache(p); p->dwDFlags = db_get_dw(hContact, "CList", "CLN_Flags", 0); GetCachedStatusMsg(p, const_cast<char *>(szProto)); p->dwLastMsgTime = INTSORT_GetLastMsgTime(hContact); cfg::arCache.insert(p); return p; }