OsdManager is designed to handle multiple Osd objects at once
…but only one of them would exist at any given point in time. Seems like that manager component was developed when OSDs were supposed to be displayed on all screens at once, and/or OSD service itself was supposed to be an always-running background process.
I suggest dropping extra complexity, starting from QMap of output names to Osd instances.