autorunManager: Don't try to scan remote filesystems
Content-Type scanning can be super expensive. The autorun manager is meant for local filesystems that are plugged into a USB port or similar, not remote NFS or sshfs mounts. https://bugzilla.gnome.org/show_bug.cgi?id=684093
This commit is contained in:
parent
ff9509b901
commit
0ad739e78b
@ -44,6 +44,19 @@ function isMountRootHidden(root) {
|
|||||||
return (path.indexOf('/.') != -1);
|
return (path.indexOf('/.') != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isMountNonLocal(mount) {
|
||||||
|
// If the mount doesn't have an associated volume, that means it could
|
||||||
|
// be a remote filesystem. For certain kinds of local filesystems,
|
||||||
|
// like digital cameras and music players, there's no associated
|
||||||
|
// gvfs volume, so err on the side of caution and assume it's a local
|
||||||
|
// filesystem to allow the prompt.
|
||||||
|
let volume = mount.get_volume();
|
||||||
|
if (volume == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return (volume.get_identifier("class") == "network");
|
||||||
|
}
|
||||||
|
|
||||||
function startAppForMount(app, mount) {
|
function startAppForMount(app, mount) {
|
||||||
let files = [];
|
let files = [];
|
||||||
let root = mount.get_root();
|
let root = mount.get_root();
|
||||||
@ -88,8 +101,9 @@ const ContentTypeDiscoverer = new Lang.Class({
|
|||||||
|
|
||||||
guessContentTypes: function(mount) {
|
guessContentTypes: function(mount) {
|
||||||
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
|
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
|
||||||
|
let shouldScan = autorunEnabled && !isMountNonLocal(mount);
|
||||||
|
|
||||||
if (autorunEnabled) {
|
if (shouldScan) {
|
||||||
// guess mount's content types using GIO
|
// guess mount's content types using GIO
|
||||||
mount.guess_content_type(false, null,
|
mount.guess_content_type(false, null,
|
||||||
Lang.bind(this,
|
Lang.bind(this,
|
||||||
|
Loading…
Reference in New Issue
Block a user