Open AlanGriffiths opened 3 years ago
The implementation of BasicWindowManager
(which ignores this function) is clearly more widely used than SystemCompositorWindowManager
which does.
As we don't need two ways to do the same thing, we should update SystemCompositorWindowManager
to use the ActiveOutputsListener
interface and remove this function.
BasicWindowManager
inherits from ActiveOutputsListener
.ActiveOutputsListener
appears to be responsible for managing the state of connected outputs. These methods only appear to be called during DisplayConfigurationListeners::configuration_applied
. According to DisplayConfigurationObserver::configuration_applied
, this is applied after the DisplayConfiguration
has been applied to the hardware.SystemCompositorWindowManager
(which also inherits from ActiveOutputsListener
) will iterate the map OutputMap. For each surface/output pair, we resize the surface to fit it inside of the Output (so it seems).ActiveOutputsListener
interfaceReopening as there has been no change (so far) to the mess described in this issue.
As mentioned elsewhere we've now removed any dependency on the suspect logic and could
Drop
shell::WindowManager::add_display()
et alia (which would resolve #2975)
@AlanGriffiths going to resolve the remainder of this one this morning!
In one of the implementations of this interface SystemCompositorWindowManager we have:
And, in this implementation, the outputs are tracked by the
ActiveOutputsListener
interface.But the other implementation
SystemCompositorWindowManager
uses this function to track the outputs.There's clearly something wrong with the diagnostic, one of the implementations, or several of these.