libxfce4menu filesystem monitoring

Brian J. Tarricone bjt23 at
Sat Sep 29 21:31:39 CEST 2007

On Sat, 29 Sep 2007 13:10:36 +0200 Jannis Pohlmann wrote:

> Am Fri, 28 Sep 2007 19:19:46 -0700
> schrieb "Brian J. Tarricone" <bjt23 at>:
> > On Thu, 20 Sep 2007 21:59:37 +0200 Jannis Pohlmann wrote:
> > 
> > >   2. Call xfce_menu_monitor_set_vtable() before anything else (but
> > >      after xfce_menu_init()).
> > 
> > Hrm, why is this not per-XfceMenu?  How should this work with the
> > user_data parameter?  I call xfce_menu_init() in the menu module's
> > g_module_check_init() function; presumably I'd call _set_vtable()
> > there as well, but there's no XfceDesktopMenu at that time yet to
> > pass as user_data.
> I didn't look deeply into the xfdesktop sourcecode, but I noticed that
> you call xfce_menu_init() in _generate_menu(). It would work pretty
> well there if you'd call xfce_menu_monitor_set_vtable() there as well
> and passed the desktop_menu as user_data parameter.

Well, I'd like to get rid of that call to xfce_menu_init().  That was
just a hack to work around your cacheing causing menu regenerations to
not work properly all the time -- presumably that isn't necessary
anymore.  (If it is, I think it's still a bug.)

> As there will be only one root menu most times, it doesn't really
> matter whether the monitor works per-XfceMenu or not.

Perhaps, but the API as-is is kinda awkward and unclear.
> I don't like the per-XfceMenu idea as it implies adding even more 
> complexity XfceMenu than we already have. Assuming that most times
> there will only be one root menu at a time we don't really need this.

Not necessarily -- to simplify things, you could maintain a hash of
XfceMenu -> (XfceMenuMonitorVtable,user_data) tuples, and look those up
in the monitoring code rather than just using the static/global
vtable/user_data pointers.  (Or the reverse of that mapping if that
makes more sense.)

> Being able to redefine the vtable or at least the user_data pointer
> sounds reasonable though.

At minimum the user_data pointer.  I imagine redefining the vtable is
less useful, though in a case where you actually have more than one
menu (no, I can't really think of a use case for that), it could be.

Really, though, right now the API just feels kinda kludgey.


More information about the Xfce4-dev mailing list