Skip to content
  • Vlad Zahorodnii's avatar
    Make backends part of libkwin · 045da603
    Vlad Zahorodnii authored
    Platform backends are provided as plugins. This is great for
    extensibility, but the disadvantages of this design outweigh the
    benefits.
    
    The number of backends will be limited, it's safe to say that we will
    have to maintain three backends for many years to come - kms/drm,
    virtual, and wayland. The plugin system adds unnecessary complexity.
    
    Startup logic is affected too. At the moment, platform backends provide
    the session object, which is awkward as it starts adding dependencies
    between backends. It will be nicer if the session is created depending
    on the loaded session type.
    
    In some cases, wayland code needs to talk to the backend directly, e.g.
    for drm leasing, etc. With the plugin architecture it's hard to do that.
    Not impossible though, we can approach it as in Qt 6, but it's still
    harder than linking the code directly.
    
    Of course, the main disadvantage of shipping backends in a lib is that
    you will need to patch kwin if you need a custom platform, however such
    cases will be rare.
    
    Despite that disadvantage, I still think that it's a step in the right
    direction where the goal is to have multi-purpose backends and other
    reusable components of kwin.
    
    The legacy X11 standalone platform is linked directly to kwin_x11
    executable, while the remaining backends are linked to libkwin.
    045da603