From 7f68dcb4a7fcc19d7dc493963197a587fb82b423 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Fri, 27 Jun 2014 01:18:39 -0400 Subject: [PATCH] Tracker: Write Desktop icon attrs only once --- src/kits/tracker/FSUtils.cpp | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/kits/tracker/FSUtils.cpp b/src/kits/tracker/FSUtils.cpp index 5df74f1bd2..5dc5620d7e 100644 --- a/src/kits/tracker/FSUtils.cpp +++ b/src/kits/tracker/FSUtils.cpp @@ -2571,23 +2571,30 @@ FSGetDeskDir(BDirectory* deskDir) if (result != B_OK) return result; + // set Desktop icons (if they haven't already been set) + attr_info attrInfo; size_t size; - const void* data = GetTrackerResources()-> - LoadResource('ICON', R_DeskIcon, &size); - if (data != NULL) - deskDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size); + const void* data; + if (deskDir->GetAttrInfo(kAttrLargeIcon, &attrInfo) == B_ENTRY_NOT_FOUND) { + data = GetTrackerResources()->LoadResource('ICON', R_DeskIcon, &size); + if (data != NULL) + deskDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size); + } - data = GetTrackerResources()-> - LoadResource('MICN', R_DeskIcon, &size); - if (data != NULL) - deskDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size); + if (deskDir->GetAttrInfo(kAttrMiniIcon, &attrInfo) == B_ENTRY_NOT_FOUND) { + data = GetTrackerResources()->LoadResource('MICN', R_DeskIcon, &size); + if (data != NULL) + deskDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size); + } #ifdef __HAIKU__ - data = GetTrackerResources()-> - LoadResource(B_VECTOR_ICON_TYPE, R_DeskIcon, &size); - if (data != NULL) - deskDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size); -#endif + if (deskDir->GetAttrInfo(kAttrIcon, &attrInfo) == B_ENTRY_NOT_FOUND) { + data = GetTrackerResources()->LoadResource(B_VECTOR_ICON_TYPE, + R_DeskIcon, &size); + if (data != NULL) + deskDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size); + } +#endif // __HAIKU__ return B_OK; }