Skip to content
  • Phaedrus Leeds's avatar
    configuration: Make the default config persist · 39997b29
    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