-
Phaedrus Leeds authored
When the build configuration management changed to using IdeConfigurationProviders rather than doing everything in IdeConfigurationManager, the default configuration stopped persisting to the disk (so changes made are only effective during a session). This is because the configuration was being added by the manager as an IdeConfiguration rather than an IdeBuildconfigConfiguration, and IdeBuildconfigConfigurationProvider knows how to read and write ".buildconfig" files. The most obvious solution, creating the default configuration in the IdeBuildconfigConfigurationProvider's load function, doesn't work because the loads are asynchronous and there has to be at least one configuration when the IdeConfigurationManager finishes initializing (otherwise the IdeBuildPipeline will fail to initialize). Instead, the load interface for IdeConfigurationProviders was changed to an async/finish pair, so the IdeConfigurationManager knows when the loads finish. At that point, it can check if a configuration was restored from a .buildconfig file (in which case nothing needs to be done) or if the default configuration was added by the IdeConfigurationManager (in which case the buildconfig provider needs to be informed of it so it can be persisted when changes are made). https://bugzilla.gnome.org/show_bug.cgi?id=779240
39997b29