7c8003f7f6
Summary: The base idea behind this change is to keep the system responsive no matter what other processes do. All input and rendering needs to go through the windowing system, so keeping it responsive is important. Currently KWin competes with all other processes for resources and this can render the system unusable. Consider some processes running amok. In this case the user might not be able to easily close the applications as KWin does not get the cpu time to perform the input tasks requested by the user. Or in the case of playing a demanding game it is important that KWin gets scheduled to forward the pointer input events. The user doesn't want that the game (or another process) wins against the windowing sytem. The disadvantage is that KWin always wins against other processes with real time scheduling. This could result in KWin running amok stalling the system. On the other hand this is no change to the current situation as if KWin runs amok the sytem is unusable. The change uses libcap to set CAP_SYS_NICE on kwin_wayland executable. KWin_wayland on start sets the scheduling policy to SCHED_RR with the lowest possible priority. Thus any other SCHED_RR process will win against KWin. So real time processes are not affected by this change! After adjusting the scheduling (which requires CAP_SYS_NICE) KWin drops this capability again. Test Plan: Verified that KWin adjusts the scheduler, that it is not passed to child processes, that the capability gets dropped and not passed to child processes. Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7757
44 lines
1.5 KiB
CMake
44 lines
1.5 KiB
CMake
#cmakedefine KWIN_BUILD_DECORATIONS 1
|
|
#cmakedefine KWIN_BUILD_TABBOX 1
|
|
#cmakedefine KWIN_BUILD_ACTIVITIES 1
|
|
#define KWIN_NAME "${KWIN_NAME}"
|
|
#define KWIN_INTERNAL_NAME_X11 "${KWIN_INTERNAL_NAME_X11}"
|
|
#define KWIN_CONFIG "${KWIN_NAME}rc"
|
|
#define KWIN_VERSION_STRING "${PROJECT_VERSION}"
|
|
#define XCB_VERSION_STRING "${XCB_VERSION}"
|
|
#define KWIN_KILLER_BIN "${CMAKE_INSTALL_FULL_LIBEXECDIR}/kwin_killer_helper"
|
|
#define KWIN_RULES_DIALOG_BIN "${CMAKE_INSTALL_FULL_LIBEXECDIR}/kwin_rules_dialog"
|
|
#define KWIN_XCLIPBOARD_SYNC_BIN "${CMAKE_INSTALL_FULL_LIBEXECDIR}/org_kde_kwin_xclipboard_syncer"
|
|
#cmakedefine01 HAVE_INPUT
|
|
#cmakedefine01 HAVE_X11_XCB
|
|
#cmakedefine01 HAVE_X11_XINPUT
|
|
#cmakedefine01 HAVE_DRM
|
|
#cmakedefine01 HAVE_GBM
|
|
#cmakedefine01 HAVE_LIBHYBRIS
|
|
#cmakedefine01 HAVE_WAYLAND_EGL
|
|
#cmakedefine01 HAVE_SYS_PRCTL_H
|
|
#cmakedefine01 HAVE_PR_SET_DUMPABLE
|
|
#cmakedefine01 HAVE_PR_SET_PDEATHSIG
|
|
#cmakedefine01 HAVE_SYS_PROCCTL_H
|
|
#cmakedefine01 HAVE_PROC_TRACE_CTL
|
|
#cmakedefine01 HAVE_SYS_SYSMACROS_H
|
|
#cmakedefine01 HAVE_BREEZE_DECO
|
|
#cmakedefine01 HAVE_UDEV
|
|
#cmakedefine01 HAVE_LIBCAP
|
|
#cmakedefine01 HAVE_SCHED_RESET_ON_FORK
|
|
#if HAVE_BREEZE_DECO
|
|
#define BREEZE_KDECORATION_PLUGIN_ID "${BREEZE_KDECORATION_PLUGIN_ID}"
|
|
#endif
|
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
#cmakedefine HAVE_UNISTD_H 1
|
|
|
|
/* Define to 1 if you have the <malloc.h> header file. */
|
|
#cmakedefine HAVE_MALLOC_H 1
|
|
|
|
#cmakedefine XCB_ICCCM_FOUND 1
|
|
#ifndef XCB_ICCCM_FOUND
|
|
#define XCB_ICCCM_WM_STATE_WITHDRAWN 0
|
|
#define XCB_ICCCM_WM_STATE_NORMAL 1
|
|
#define XCB_ICCCM_WM_STATE_ICONIC 3
|
|
#endif
|