GNOME Bugzilla – Bug 88829
notifications between distinct GConfDatabases and arbitrary composite GConfDatabases
Last modified: 2004-12-22 21:47:04 UTC
I was going to split this patch into two seperate bugs, but the two of them are fairly interdependant. The first part allows notifications to take place between different GConfDatabases. e.g. if you're directly modifying the defaults database, applications who's view of the the default composite db has changed will get notified. The second part adds API to allow applications (e.g. gconf-editor or gconftool) to work on arbitrary composite databases. This way you can model how it would look if you added another configuration source to the default database. Issues with the patch (marked by FIXME): * I arbitrarily picked ';' as the delimeter for a stringified list of database addresses, this may not be the best choice * I did not call gconfd_notify_other_listeners from gconf_database_notify_listeners because I either would have had to modify the gconf_database_notify_listeners signature (adding a 'notify_others' flag for example) or use static variables to flag when not to recurse - but the former would be an API/ABI change and the later could possibly lead to re-entrancy hell. * I implemented gconf_sources_first_writable instead of the possibly better solution of returning the GConfSource affected in gconf_source_set_value. Again, I didn't want to modify the API. * In gconfd_notify_other_listeners, I just passed through is_default and is_writable. They may have to be re-computed - I'm not sure, and it was pure laziness that stopped me from checking it out further.
Created attachment 10012 [details] [review] patch
Created attachment 10013 [details] Might as well include some notes to myself while doing the first part so you can check over my logic
I'm not at all qualified to assess the importance of the problem; don't take the lack of actual triage to mean 'this is only a normal problem.'
huge patch! A quick comment based on skimming, I believe gconf_sources_* and gconf_database_* are entirely private, not-installed APIs that can be changed - so some of your FIXME may be possible to fix.
This is going to massively conflict/overlap with Cyrille's patch isn't it? Hmm, fun. We need to get "make check"/"make check-coverage" going as with dbus, that would be *so* helpful with all this refactoring...
Posted a re-worked version of the patch to: http://mail.gnome.org/archives/gconf-list/2004-March/msg00017.html
Hmm, I've committed this now