Who reads and who writes

Three processes build a CinnamonBgList: the background daemon, the settings panel, and the slideshow daemon.

That both of Cinnamon's own consumers reach the library only through cinnamon_bg_list_has_slideshow() and cinnamon_bg_list_set_single_uri() is deliberate. Both are static and touch nothing but GSettings, so the shell never constructs a list and never acquires the window manager's DisplayConfig proxy that one would bring with it.

cinnamon_bg_list_save() writes picture-uri-list alone, so a component that only meant to change a picture cannot write back whatever mode it happens to be holding. Changing the mode is a separate, deliberate call. cinnamon_bg_list_set_single_uri() is the one exception, and an explicit one: it sets the mode to mirror along with the picture, because one wallpaper on every monitor is what it means.