St. Clair Software
Search St. Clair Software:

Online Store

Archive for the ‘Development’ Category

Being careful with LSSharedFileListAddObserver

Friday, November 6th, 2009

So, Apple added this cool little capability to the Launch Services API in Leopard: LSSharedFileListAddObserver will call your observer function whenever there are changes in a number of different file lists maintained by Launch Services. One of those lists is the “Recent Documents” list in the Apple Menu. ”Great!” I thought, “I’ll roll this into Default Folder X to ensure that it doesn’t miss any recently used folders.”  It’s a simple API - what could go wrong?  As a long time developer, I should have known better - if you EVER say this (even if you never even say it out loud), you need to poke yourself with something sharp and realize that the consequences will probably hurt quite a bit more than that. “What could go wrong?” indeed.

So yes, here I am apologizing for not having poked myself after I used LSSharedFileListAddObserver without asking more questions - or at least without testing more.  Here’s how Default Folder X ended up using 60% of some users’ CPUs while doing nothing useful:

  1. DFX added itself as an observer for kLSSharedFileListRecentDocumentItems.
  2. The observer function got called by Launch Services because the user double-clicked a document in the Finder.
  3. DFX looked at the list, took the most recent entry in it (the first one), asked Launch Services for the URL of the document, and added the folder enclosing that document to its Recent Folders list.

Pretty simple, right? Yeah, I thought so too. This was tested thoroughly on Snow Leopard and performed fine, and all my Leopard testers reported that it worked well for them too.

So what’s the problem then?  Well, there’s this little “issue”…  If a user has a Windows server mounted on the Desktop, things get a little more interesting.  Normally, when Launch Services calls your observer function, it hands you the file list and you ask for a copy of the list.  The list itself is just a series of ID’s and references - to see what’s in an entry, you have to call LSSharedFileListItemResolve().  And that’s where the interesting part happened.  On Leopard, if the shared file list item lies on a Windows server, the act of calling LSSharedFileListItemResolve actually results in the item being changed, so your observer function gets called again the next time you hit your event loop.  The result of this is that you get called over and over again if you naively use LSSharedFileListItemResolve to get more info about the items that Launch Services is handing you.

So - the warning:  If you use LSSharedFileListAddObserver to watch the list of recent documents, keep a copy of the ID’s from the previous call and ONLY call LSSharedFileListItemResolve if there’s a new ID in the array.  Otherwise do nothing, or work off cached information - otherwise you’ll end up in an infinite loop, sucking down lots of CPU time.  And if you’re doing anything that interacts with the filesystem, make SURE you test with SMB shared volumes too.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Default Folder X high CPU-usage and responsiveness problems

Thursday, November 5th, 2009

Well, there’s definitely a bug in Default Folder X 4.3.2.  When running under Leopard and accessing SMB file servers, DFX will start consuming 20-60% of one CPU and will start to lag or become completely unresponsive.  This may also affect Snow Leopard and / or other types of file servers besides SMB.

I’ve got a test build available with a fix:

http://www.stclairsoft.com/download/DefaultFolderX-4.3.3b1.dmg

If you’re having any trouble with Default Folder X, please download and install it.  It should fix your problems.  If you run into any problems, please let me know as soon as possible at DefaultFolder@stclairsoft.com.

Thanks, and I apologize for the bug (I’ll post the gory details in a few minutes, since it’s an interesting little ‘gotcha’ in the Launch Services API).

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Default Folder X on Snow Leopard: Build 4.2.2d7

Monday, July 27th, 2009

There are more compatibility fixes for Snow Leopard in this pre-release build.  Specifically:

  • Updated the Default Folder X preference pane to run in 64 bit mode.
  • Eliminated “auto malloc” errors in applications that use garbage-collected memory management.

You can grab a copy of the installer from:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.2d7.dmg

Again, because of some of the fixes I’ve made since version 4.2.1, anyone running Snow Leopard should be running a pre-release build of Default Folder X 4.2.2.

If you encounter any issues with this build or have suggestions, please don’t hesitate to drop me a line at DefaultFolder (at) stclairsoft.com.  Thanks!

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

DFX: Important Snow Leopard and DFPreviewServer fixes

Wednesday, July 22nd, 2009

I’ve put together a development build of Default Folder X that incorporates a couple of important fixes, plus some handy new tweaks.  If you’ve noticed a process called DFPreviewServer slowing down your machine or have experienced problems while running Snow Leopard, this build will fix those problems.

You can download the latest pre-release build of Default Folder X here:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.2d6.dmg

If you are running Default Folder X on a seed build of Snow Leopard you should install this update NOW.

Changes include the following:

  • Default Folder X contains a workaround for a bug in OS X’s hierarchical menu system.  The old workaround functioned fine in 10.4 and 10.5, but intermittently causes the hierarchical path menu in Open and Save dialogs to hang or crash in Mac OS 10.6 (Snow Leopard).  It’s been rewritten and now works correctly.
  • Fixed a bug in DFPreviewServer that could consume a lot of CPU time and memory. This occurred when previewing very large files (greater than 200 MB) that the system identifies as text files.
  • Added some user defaults so you can globally set a minimum file dialog size and column width.  Use these commands in Terminal to set the values:

    defaults write com.stclairsoft.DefaultFolderX minimumSize.width 800
    defaults write com.stclairsoft.DefaultFolderX minimumSize.height 600
    defaults write com.stclairsoft.DefaultFolderX minimumSize.columnWidth 250

    Change the numbers at the end of the commands to the sizes you want to use (in pixels).
  • Added a way to override the time before menu previews zoom to full size.  In Terminal, use this command to change the value (the default value is 1.5 seconds):

    defaults write com.stclairsoft.DefaultFolderX menuZoomDelay 1.5

    Change the “1.5″ in the line above to the number of seconds you want for the delay.  Note that you need to turn Default Folder X off and back on again for this change to take effect.
  • Default Folder X’s “New Folder” command would not work in some applications when creating a folder within a folder that was reached by double-clicking on an alias. This has been fixed.
  • Corrected a problem with the “Make Save dialogs automatically default to the current document’s folder” setting that would cause DFX to default to the top level of your hard disk or your home folder in certain applications (including Address Book).
[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Default Folder X 4.2.1b2 is available for testing

Tuesday, June 30th, 2009

Here’s the 4.2.1b2 build of Default Folder X:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.1b2.dmg

The new menu preview feature now has an on / off switch in the preferences window, and due to popular demand the small sized previews have increased to 192 x 192 (instead of 128 x 128).  The zoom-when-you-pause feature now works reliably on all systems, and this build works correctly under Mac OS 10.4.  Please download it and give it a spin!

Send any bug reports, impressions, and feature requests to defaultfolder@stclairsoft.com.  Here’s the full 4.2.1 change history from the ReadMe:

  • Default Folder X now gives you file previews in its menus.  As you mouse through Default Folder X’s hierarchical menus from the menu bar, you’ll see a preview of the file that’s highlighted in the menu.  Hover there for a couple of seconds and the preview will enlarge.
  • In Open and Save As dialogs, Default Folder X now puts a “Computer” item at the top of the folder hierarchy in the path menu.
  • New Spotlight tags were sometimes not written out to the shared OpenMeta recent tag list.  This has been fixed.
  • Spotlight tag completion now ignores differences in diacritical marks.
  • Added support for Fluid site-specific browsers when they’re running as menu extras.
  • Previews now correctly follow aliases so that a preview of the original file is shown when you select an alias in an Open dialog.
  • When two folders with the same name are in a menu, the menu items for them will now include the name of the parent folders that uniquely identify those folders (Default Folder X used to just show their immediate parent folders, but sometimes those had the same names too).
  • Fixed an AppleScript problem that would cause Preview to print a PDF file over and over again if you selected a the file in the Finder and chose Print from the File menu.
  • Changed the rebound feature so that filenames with a ‘:’ character are recognized correctly in Cocoa applications.
  • Corrected a problem that would result in Default Folder X not loading in multiple running applications that had the same creator signature (when running both Photoshop CS3 and CS4 at the same time, for instance).
  • Default Folder X was saving empty Finder comments, resulting in Spotlight attaching empty com.apple.metadata:kMDItemFinderComment attributes to some files.  This has been fixed.
  • Fixed compatibility problems with python-based applications that use appscript.
  • Added support for 64-bit PowerPC applications to the scripting addition.
  • Corrected inconsistent rebound behavior on network server drives.
  • Fixed the Extras/DFX script so it doesn’t show a busy cursor when it pops up the Default Folder X menu.

Thanks!

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

News | Products | Downloads | Purchase | Support | Contact | Home

1996-2007 St. Clair Software