Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QS takes a long time to list actions on files with the Eject action enabled #56

Closed
ghost opened this issue Feb 1, 2010 · 3 comments
Closed

Comments

@ghost
Copy link

ghost commented Feb 1, 2010

When the Eject action in Core Support is enabled, it takes a second or so for any actions to appear for files. From taking a very quick look at it, it seems that the slowdown is caused by line 152 of QSActionProvider_EmbeddedProviders.m:
if ([[[NSWorkspace sharedWorkspace] mountedLocalVolumePaths] containsObject:[[dObject singleFilePath] stringByStandardizingPath]])

@pjrobertson
Copy link
Member

Again, I'm not seeing this problem.

It may be an issue with a plugin you have installed.

None of those methods are deprecated...

@razzed
Copy link

razzed commented Oct 6, 2010

I am seeing identical behavior as @neurolepsy as well. Hitting enter after, say, launching Safari would take 5 or more seconds, sometimes much longer. I can run "Sample Process" on the beach ball and it would show me a very, very deep stack (over 200 deep) and the found method call was mountedLocalVolumePath.

Disabling the "Eject" functionality from the core made this disappear right away.

The final depths of the sample were:

2788 -[NSWorkspace mountedLocalVolumePaths]
  2788 _pathForFSRef
    2788 FSRefMakePathInternal(FSRef const*, unsigned char*, unsigned long)
      2788 FSMakePath(short, unsigned long, char const*, unsigned long, char*)
        2788 FSMount::getattrs(unsigned long, char const*, unsigned long, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
          2788 FSMount::_getattrs(unsigned long, char const*, unsigned long, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
            2788 FSMount::getattrscore(bool, char const*, unsigned long, char const*, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
              2788 open$UNIX2003

If it's any help, I have iDisk with automatic syncing enabled, and an external 1TB USB drive which is currently unmounted.

If you want the sample, I have it, but most of the levels are a single call, like:

2788 0xe2168c

Recursive, I guess... Either that or a context switch function or something like that.

@tiennou
Copy link
Member

tiennou commented Feb 20, 2011

Make the Eject action validate by checking if file path starts with /Volumes/.

This is to prevent a stall while NSWorkspace do the query, the check if just moved to the actual execution.

Closed by dc6f316

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants