Tracker: Write Desktop icon attrs only once

This commit is contained in:
John Scipione
2014-07-17 14:51:24 -04:00
parent dd3359ae8f
commit 7f68dcb4a7
+20 -13
View File
@@ -2571,23 +2571,30 @@ FSGetDeskDir(BDirectory* deskDir)
if (result != B_OK) if (result != B_OK)
return result; return result;
// set Desktop icons (if they haven't already been set)
attr_info attrInfo;
size_t size; size_t size;
const void* data = GetTrackerResources()-> const void* data;
LoadResource('ICON', R_DeskIcon, &size); if (deskDir->GetAttrInfo(kAttrLargeIcon, &attrInfo) == B_ENTRY_NOT_FOUND) {
if (data != NULL) data = GetTrackerResources()->LoadResource('ICON', R_DeskIcon, &size);
deskDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size); if (data != NULL)
deskDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size);
}
data = GetTrackerResources()-> if (deskDir->GetAttrInfo(kAttrMiniIcon, &attrInfo) == B_ENTRY_NOT_FOUND) {
LoadResource('MICN', R_DeskIcon, &size); data = GetTrackerResources()->LoadResource('MICN', R_DeskIcon, &size);
if (data != NULL) if (data != NULL)
deskDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size); deskDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size);
}
#ifdef __HAIKU__ #ifdef __HAIKU__
data = GetTrackerResources()-> if (deskDir->GetAttrInfo(kAttrIcon, &attrInfo) == B_ENTRY_NOT_FOUND) {
LoadResource(B_VECTOR_ICON_TYPE, R_DeskIcon, &size); data = GetTrackerResources()->LoadResource(B_VECTOR_ICON_TYPE,
if (data != NULL) R_DeskIcon, &size);
deskDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size); if (data != NULL)
#endif deskDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size);
}
#endif // __HAIKU__
return B_OK; return B_OK;
} }