Re: automounting / autorunning
- From: Alexander Larsson <alexl redhat com>
- To: David Zeuthen <david fubar dk>
- Cc: nautilus-list gnome org
- Subject: Re: automounting / autorunning
- Date: Fri, 18 Jan 2008 09:15:01 +0100
On Thu, 2008-01-17 at 23:54 -0500, David Zeuthen wrote:
> On Thu, 2008-01-17 at 14:28 +0100, Alexander Larsson wrote:
> > > This fixes a bug where the returned GIcon isn't reffed.
> > It shouldn't ref it. (See previous discussion on gtk-devel-list on
> > getters vs refing for details.)
> Oh, ok. A bit confusing. Anyway, if we don't do this we need to remove
> the g_object_unref(icon) call in src/nautilus-x-content-bar.c around
> line 116.
It is a bit confusing. There was some discussion on how getters should
act in general for glib/gtk, and the result was that we don't have a
standard way for this, but you need to read the docs for each call.
However, if possible we don't ref/copy/dup in getters.
For the GAppInfo object we just return the constant icon object that is
stored in the appinfo. Refing it wouldn't really be a problem, except it
would be inconsistant with what the string getters do in that class, and
if we strdup in them thats a waste in most cases.
However, for GMount, these are live object that change over time (has a
change signal even), so we need to ref them. In particular, the API need
to be threadsafe to work with the async I/O stuff, so the getters really
*have* to copy or the caller might end up with an object that doesn't
> > Also, the way you detect content types is not really nice. You're doing
> > sync I/O to find things like the enclosing volume, etc, which is a major
> > no-no in Nautilus. And having a separated out call for getting some
> > information about files instead of using the Nautilus i/o machinery is
> > also pretty weird. I'll try to fix this up.
> Yeah, sorry about that. The Nautilus code base is huge and it's hard to
> find my way around it. Is there anything I can do to help / you need me
> to do?
I'll work on it some more today and let you know the results.
> The reason I brought it was because I couldn't easily figure out how to
> get the GMount for a file in computer:///. E.g. in libnautilus-private/
> there's this TODO:
Well, many mountable objects may have no mount. For instance when
enumerating the shares on a smb server (smb://server/) and the shares
are not mounted. However, if they are we should be able to find them by
looking up the "standard::target-uri" attribute against the volume
> Also, there's a few TODO's left in my (now committed) patches to only to
> do this local mounts. How do I find out if this is the case?
What do you mean by local? Its a very vague word, which could for
instance refer to a gphoto:// mount, or it could mean only file: mounts,
] [Thread Prev