From 20885736f969af9eb55f30c373dc465ecfb481ea Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 8 Nov 2014 21:43:09 +0000 Subject: - fix for the global avatar's redrawing; - more _taccess; - version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@10933 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/AVS/src/options.cpp | 87 ++++++++++++++++++++++---------------------- plugins/AVS/src/services.cpp | 12 +----- plugins/AVS/src/utils.cpp | 14 ++----- plugins/AVS/src/version.h | 2 +- 4 files changed, 50 insertions(+), 65 deletions(-) (limited to 'plugins/AVS') diff --git a/plugins/AVS/src/options.cpp b/plugins/AVS/src/options.cpp index 4cae5a111e..0988050bc2 100644 --- a/plugins/AVS/src/options.cpp +++ b/plugins/AVS/src/options.cpp @@ -117,62 +117,61 @@ static void SetProtoPic(char *szProto) ofn.lpstrInitialDir = _T("."); *FileName = '\0'; ofn.lpstrDefExt = _T(""); - if (GetOpenFileName(&ofn)) { - HANDLE hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile == INVALID_HANDLE_VALUE) - return; + if (!GetOpenFileName(&ofn)) + return; - CloseHandle(hFile); + if (_taccess(FileName, 4) == -1) + return; - TCHAR szNewPath[MAX_PATH]; - PathToRelativeT(FileName, szNewPath, g_szDataPath); - db_set_ts(NULL, PPICT_MODULE, szProto, szNewPath); + TCHAR szNewPath[MAX_PATH]; + PathToRelativeT(FileName, szNewPath, g_szDataPath); + db_set_ts(NULL, PPICT_MODULE, szProto, szNewPath); - if (!lstrcmpA(AVS_DEFAULT, szProto)) { - for (int i = 0; i < g_ProtoPictures.getCount(); i++) { + if (!lstrcmpA(AVS_DEFAULT, szProto)) { + for (int i = 0; i < g_ProtoPictures.getCount(); i++) { + protoPicCacheEntry& p = g_ProtoPictures[i]; + if (lstrlenA(p.szProtoname) == 0) + continue; + + if (p.hbmPic == 0 || !lstrcmpA(p.szProtoname, AVS_DEFAULT)) { + CreateAvatarInCache(0, &p, szProto); + NotifyEventHooks(hEventChanged, 0, (LPARAM)&p); + } + } + } + else if (strstr(szProto, "Global avatar for")) { + char szProtoname[MAX_PATH] = { 0 }; + lstrcpynA(szProtoname, szProto, lstrlenA(szProto) - lstrlenA("accounts")); + lstrcpyA(szProtoname, strrchr(szProtoname, ' ') + 1); + for (int i = 0; i < g_ProtoPictures.getCount(); i++) { + PROTOACCOUNT* pdescr = (PROTOACCOUNT*)CallService(MS_PROTO_GETACCOUNT, 0, (LPARAM)g_ProtoPictures[i].szProtoname); + if (pdescr == NULL && lstrcmpA(g_ProtoPictures[i].szProtoname, szProto)) + continue; + + if (!lstrcmpA(g_ProtoPictures[i].szProtoname, szProto) || !lstrcmpA(pdescr->szProtoName, szProtoname)) { protoPicCacheEntry& p = g_ProtoPictures[i]; if (lstrlenA(p.szProtoname) != 0) { if (p.hbmPic == 0) { - CreateAvatarInCache(0, &p, (char*)szProto); + CreateAvatarInCache(0, &p, szProto); NotifyEventHooks(hEventChanged, 0, (LPARAM)&p); } } } } - else if (strstr(szProto, "Global avatar for")) { - char szProtoname[MAX_PATH] = { 0 }; - lstrcpynA(szProtoname, szProto, lstrlenA(szProto) - lstrlenA("accounts")); - lstrcpyA(szProtoname, strrchr(szProtoname, ' ') + 1); - for (int i = 0; i < g_ProtoPictures.getCount(); i++) { - PROTOACCOUNT* pdescr = (PROTOACCOUNT*)CallService(MS_PROTO_GETACCOUNT, 0, (LPARAM)g_ProtoPictures[i].szProtoname); - if (pdescr == NULL && lstrcmpA(g_ProtoPictures[i].szProtoname, szProto)) - continue; - - if (!lstrcmpA(g_ProtoPictures[i].szProtoname, szProto) || !lstrcmpA(pdescr->szProtoName, szProtoname)) { - protoPicCacheEntry& p = g_ProtoPictures[i]; - if (lstrlenA(p.szProtoname) != 0) { - if (p.hbmPic == 0) { - CreateAvatarInCache(0, &p, (char*)szProto); - NotifyEventHooks(hEventChanged, 0, (LPARAM)&p); - } - } - } - } - } - else { - for (int i = 0; i < g_ProtoPictures.getCount(); i++) { - protoPicCacheEntry& p = g_ProtoPictures[i]; - if (lstrlenA(p.szProtoname) == 0) - break; + } + else { + for (int i = 0; i < g_ProtoPictures.getCount(); i++) { + protoPicCacheEntry& p = g_ProtoPictures[i]; + if (lstrlenA(p.szProtoname) == 0) + break; - if (!strcmp(p.szProtoname, szProto) && lstrlenA(p.szProtoname) == lstrlenA(szProto)) { - if (p.hbmPic != 0) - DeleteObject(p.hbmPic); - ZeroMemory(&p, sizeof(avatarCacheEntry)); - CreateAvatarInCache(0, &p, (char*)szProto); - NotifyEventHooks(hEventChanged, 0, (LPARAM)&p); - break; - } + if (!strcmp(p.szProtoname, szProto) && lstrlenA(p.szProtoname) == lstrlenA(szProto)) { + if (p.hbmPic != 0) + DeleteObject(p.hbmPic); + ZeroMemory(&p, sizeof(avatarCacheEntry)); + CreateAvatarInCache(0, &p, szProto); + NotifyEventHooks(hEventChanged, 0, (LPARAM)&p); + break; } } } diff --git a/plugins/AVS/src/services.cpp b/plugins/AVS/src/services.cpp index 035eb83cdb..3206546bee 100644 --- a/plugins/AVS/src/services.cpp +++ b/plugins/AVS/src/services.cpp @@ -157,13 +157,10 @@ static INT_PTR avSetAvatar(MCONTACT hContact, TCHAR *tszPath) else szFinalName = tszPath; // filename is now set, check it and perform all needed action - HANDLE hFile = CreateFile(szFinalName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile == INVALID_HANDLE_VALUE) + if (_taccess(szFinalName, 4) == -1) return 0; // file exists... - CloseHandle(hFile); - TCHAR szBackupName[MAX_PATH]; PathToRelativeT(szFinalName, szBackupName, g_szDataPath); db_set_ts(hContact, "ContactPhoto", "Backup", szBackupName); @@ -499,16 +496,11 @@ static int SetProtoMyAvatar(char *protocol, HBITMAP hBmp, TCHAR *originalFilenam static int InternalSetMyAvatar(char *protocol, TCHAR *szFinalName, SetMyAvatarHookData &data, BOOL allAcceptXML, BOOL allAcceptSWF) { - HANDLE hFile = 0; - int format = ProtoGetAvatarFormat(szFinalName); - if (format == PA_FORMAT_UNKNOWN || (hFile = CreateFile(szFinalName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) + if (format == PA_FORMAT_UNKNOWN || _taccess(szFinalName, 4) == -1) return -3; - CloseHandle(hFile); - // file exists... - HBITMAP hBmp = NULL; if (format == PA_FORMAT_SWF) { diff --git a/plugins/AVS/src/utils.cpp b/plugins/AVS/src/utils.cpp index a59f46af50..d9a4c07229 100644 --- a/plugins/AVS/src/utils.cpp +++ b/plugins/AVS/src/utils.cpp @@ -144,11 +144,9 @@ int CreateAvatarInCache(MCONTACT hContact, avatarCacheEntry *ace, char *szProto) return -1; _tcsncpy_s(tszFilename, VARST(tszFilename), _TRUNCATE); - if ((hFile = CreateFile(tszFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) + if (_taccess(tszFilename, 4) == -1) return -2; - CloseHandle(hFile); - BOOL isTransparentImage = 0; ace->hbmPic = BmpFilterLoadBitmap(&isTransparentImage, tszFilename); ace->dwFlags = 0; @@ -186,9 +184,7 @@ int CreateAvatarInCache(MCONTACT hContact, avatarCacheEntry *ace, char *szProto) } // Make transparent? - if (!noTransparency && !isTransparentImage - && db_get_b(hContact, "ContactPhoto", "MakeTransparentBkg", - db_get_b(0, AVS_MODULE, "MakeTransparentBkg", 0))) { + if (!noTransparency && !isTransparentImage && db_get_b(hContact, "ContactPhoto", "MakeTransparentBkg", db_get_b(0, AVS_MODULE, "MakeTransparentBkg", 0))) { if (MakeTransparentBkg(hContact, &ace->hbmPic)) { ace->dwFlags |= AVS_CUSTOMTRANSPBKG | AVS_HASTRANSPARENCY; GetObject(ace->hbmPic, sizeof(bminfo), &bminfo); @@ -197,9 +193,7 @@ int CreateAvatarInCache(MCONTACT hContact, avatarCacheEntry *ace, char *szProto) } } else if (hContact == INVALID_CONTACT_ID) { // My avatars - if (!noTransparency && !isTransparentImage - && db_get_b(0, AVS_MODULE, "MakeTransparentBkg", 0) - && db_get_b(0, AVS_MODULE, "MakeMyAvatarsTransparent", 0)) { + if (!noTransparency && !isTransparentImage && db_get_b(0, AVS_MODULE, "MakeTransparentBkg", 0) && db_get_b(0, AVS_MODULE, "MakeMyAvatarsTransparent", 0)) { if (MakeTransparentBkg(0, &ace->hbmPic)) { ace->dwFlags |= AVS_CUSTOMTRANSPBKG | AVS_HASTRANSPARENCY; GetObject(ace->hbmPic, sizeof(bminfo), &bminfo); @@ -268,7 +262,7 @@ int GetFileHash(TCHAR* filename) } } } - while (dwRead == 1024); + while (dwRead == 1024); CloseHandle(hFile); diff --git a/plugins/AVS/src/version.h b/plugins/AVS/src/version.h index 5e231725bd..ed30e02cb5 100644 --- a/plugins/AVS/src/version.h +++ b/plugins/AVS/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 95 #define __RELEASE_NUM 3 -#define __BUILD_NUM 3 +#define __BUILD_NUM 4 #include -- cgit v1.2.3