Replace Screens class
Open, NormalPublic


With all Platforms using AbstractOutput now, the next goal is to replace the Screens class with something more integrated, either in Platform directly or as a separate output manager.

... looking at the code this will actually be somewhat bigger. So here is a first plan:

Preliminary Cleanup

New Outputs global connecting Platform and Workspace levels

  • Replace Screens class with Outputs global class being created in Platform and directly accessed on Workspace level.
  • Outputs features getters for all and only enabled outputs and does this by just calling into Platform.
  • Through these getters Workspace-level classes access AbstractOutput properties directly.
romangg created this task.Jun 14 2019, 12:08 PM
romangg triaged this task as Normal priority.
romangg updated the task description. (Show Details)Jun 14 2019, 3:55 PM

For the implementation strategy a somewhat relevant question on a longer time scale is how we want to handle multi-platform in the future. Currently there is only one Platform instance active per session and in the important use case this is mostly the Drm backend. But is there still a case to be made, where more than one Platform at the same time could make sense?

See also T5709.

romangg moved this task from Backlog to Work In Progress on the KWin board.Jun 14 2019, 6:40 PM
zzag added a subscriber: zzag.Jun 17 2019, 8:42 AM

API-wise, the best option is to let platform do PRIME stuff, i.e. have only one instance of platform. Apparently this would require some refactoring in the drm backend, e.g. there have to be a thing that represents each drm device, some manager that orchestrates devices (if this part gets done correctly, it should be quite easy to add support for GPU hot-plugging), etc.

romangg moved this task from Work In Progress to Backlog on the KWin board.Oct 21 2019, 8:24 AM
romangg removed romangg as the assignee of this task.Apr 23 2020, 5:05 PM