diff options
author | Jens Verwiebe <info@jensverwiebe.de> | 2013-10-13 22:14:38 +0400 |
---|---|---|
committer | Jens Verwiebe <info@jensverwiebe.de> | 2013-10-13 22:14:38 +0400 |
commit | 6d54ff5d833c93220b46f051a6955648661be83e (patch) | |
tree | 7dd5a80a0a1f8fcc4562a53ca718b7b8122ca555 /source/blender/editors/space_file/fsmenu.c | |
parent | 30d03e12bcfa0b6f2dc53d1f658cd6965a4d815e (diff) |
OSX: Final cleanup for #60729
Diffstat (limited to 'source/blender/editors/space_file/fsmenu.c')
-rw-r--r-- | source/blender/editors/space_file/fsmenu.c | 65 |
1 files changed, 23 insertions, 42 deletions
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index f8c8551726b..952e8494ef5 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -400,57 +400,38 @@ void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks) } } #else - /* 10.5 provides ability to retrieve Finder favorite places */ - UInt32 seed; - OSErr err = noErr; - CFArrayRef pathesArray; - LSSharedFileListRef list; - LSSharedFileListItemRef itemRef; - CFIndex i, pathesCount; - CFURLRef cfURL = NULL; - CFStringRef pathString = NULL; + /* Get mounted volumes better method OSX 10.5 and higher, see: */ + /*https://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFURLRef/Reference/reference.html*/ + /* we get all volumes here including network and do not relay on user-defined finder visibility anymore -> less confusing */ + /* TODO: find out why network volumes only show up when "touched" once and implement a "mount" perhaps */ - /* First get local mounted volumes */ - list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL); - pathesArray = LSSharedFileListCopySnapshot(list, &seed); - pathesCount = CFArrayGetCount(pathesArray); + CFURLRef cfURL = NULL; + CFURLEnumeratorResult result = kCFURLEnumeratorSuccess; + CFURLEnumeratorRef volEnum = CFURLEnumeratorCreateForMountedVolumes(NULL, kCFURLEnumeratorSkipInvisibles, NULL); - for (i = 0; i < pathesCount; i++) { - itemRef = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(pathesArray, i); - - err = LSSharedFileListItemResolve(itemRef, - kLSSharedFileListNoUserInteraction | - kLSSharedFileListDoNotMountVolumes, - &cfURL, NULL); - if (err != noErr) - continue; - - /* Get mounted volumes better method see: */ - /*https://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFURLRef/Reference/reference.html*/ - /* we get all volumes here including network and do not relay on user-defined finder visibility anymore -> less confusing */ - /* TODO: find out why network volumes only show up when "touched" once and implement a "mount" perhaps */ + while (result != kCFURLEnumeratorEnd) { + unsigned char defPath[FILE_MAX]; - CFURLEnumeratorResult result = kCFURLEnumeratorSuccess; - CFURLEnumeratorRef volEnum = CFURLEnumeratorCreateForMountedVolumes(NULL, kCFURLEnumeratorSkipInvisibles, NULL); + result = CFURLEnumeratorGetNextURL(volEnum, &cfURL, NULL); + if (result != kCFURLEnumeratorSuccess) + continue; - while (result != kCFURLEnumeratorEnd) { - unsigned char defPath[FILE_MAX]; - - result = CFURLEnumeratorGetNextURL(volEnum, &cfURL, NULL); - if (result != kCFURLEnumeratorSuccess) - continue; - - CFURLGetFileSystemRepresentation(cfURL, false, (UInt8*)defPath, FILE_MAX); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)defPath, FS_INSERT_SORTED); + CFURLGetFileSystemRepresentation(cfURL, false, (UInt8*)defPath, FILE_MAX); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)defPath, FS_INSERT_SORTED); } - CFRelease(volEnum); - } - CFRelease(pathesArray); - CFRelease(list); + CFRelease(volEnum); /* Finally get user favorite places */ if (read_bookmarks) { + UInt32 seed; + OSErr err = noErr; + CFArrayRef pathesArray; + LSSharedFileListRef list; + LSSharedFileListItemRef itemRef; + CFIndex i, pathesCount; + CFURLRef cfURL = NULL; + CFStringRef pathString = NULL; list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); pathesArray = LSSharedFileListCopySnapshot(list, &seed); pathesCount = CFArrayGetCount(pathesArray); |