Skip to content
  • Martin Flöser's avatar
    Ensure libinput connection thread uses real time scheduling · 91d78daa
    Martin Flöser authored
    Summary:
    The SCHED_RESET_ON_FORK results in threads (not only processes) to have
    the scheduling policy reset to default. This means that the libinput
    thread is not real time, but this was actually intended.
    
    To solve this problem KWin does start without the RESET_ON_FORK flag
    during startup. Once createInput has been called the scheduling is
    adjusted again and RESET_ON_FORK is added again. This results in the
    libinput thread and all threads Qt starts in between (e.g. dbus) to gain
    real time policy. But it is still not leaked to other processes or to
    threads in KWin which don't need it.
    
    Other options considered: just don't use RESET_ON_FORK and instead
    manually reset on fork. This would mean all threads in KWin gain real
    time, but we don't need this. It's only interesting for the main
    (rendering, Wayland thread) and the input thread. Also the danger to
    leak into another process is too high.
    
    Keeping the capability till the libinput thread is created and adjust
    the thread itself. This option was discarded as I don't want KWin to
    have any capabilities when the QApplication is started.
    
    Test Plan: ps -eL -o class,rtprio,cmd,comm  | grep kwin_wayland
    
    Reviewers: #kwin, #plasma
    
    Subscribers: plasma-devel, kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D8065
    91d78daa