diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2023-09-28 21:48:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-28 21:48:33 +0100 |
| commit | 88b63a00b68350d6d001445357a2582ab5975f9c (patch) | |
| tree | a730d59c70e5987eae8006fd5b0eb4ef531113dc /src/Compositor.cpp | |
| parent | 1e513e25d5645260a2ebdfbe8dbf3b8df487339c (diff) | |
renderer: Tearing implementation (#3441)
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 0672a543..1cb378db 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -257,6 +257,8 @@ void CCompositor::initServer() { m_sWLRCursorShapeMgr = wlr_cursor_shape_manager_v1_create(m_sWLDisplay, 1); + m_sWLRTearingControlMgr = wlr_tearing_control_manager_v1_create(m_sWLDisplay, 1); + if (!m_sWLRHeadlessBackend) { Debug::log(CRIT, "Couldn't create the headless backend"); throwError("wlr_headless_backend_create() failed!"); @@ -315,6 +317,7 @@ void CCompositor::initAllSignals() { addWLSignal(&m_sWLRSessionLockMgr->events.new_lock, &Events::listen_newSessionLock, m_sWLRSessionLockMgr, "SessionLockMgr"); addWLSignal(&m_sWLRGammaCtrlMgr->events.set_gamma, &Events::listen_setGamma, m_sWLRGammaCtrlMgr, "GammaCtrlMgr"); addWLSignal(&m_sWLRCursorShapeMgr->events.request_set_shape, &Events::listen_setCursorShape, m_sWLRCursorShapeMgr, "CursorShapeMgr"); + addWLSignal(&m_sWLRTearingControlMgr->events.new_object, &Events::listen_newTearingHint, m_sWLRTearingControlMgr, "TearingControlMgr"); if (m_sWRLDRMLeaseMgr) addWLSignal(&m_sWRLDRMLeaseMgr->events.request, &Events::listen_leaseRequest, &m_sWRLDRMLeaseMgr, "DRM"); @@ -2475,7 +2478,13 @@ int CCompositor::getNewSpecialID() { } void CCompositor::performUserChecks() { - // empty + const auto atomicEnv = getenv("WLR_DRM_NO_ATOMIC"); + const auto atomicEnvStr = std::string(atomicEnv ? atomicEnv : ""); + if (g_pConfigManager->getInt("general:allow_tearing") == 1 && atomicEnvStr != "1") { + g_pHyprNotificationOverlay->addNotification("You have enabled tearing, but immediate presentations are not available on your configuration. Try adding " + "env = WLR_DRM_NO_ATOMIC,1 to your config.", + CColor(0), 15000, ICON_WARNING); + } } void CCompositor::moveWindowToWorkspaceSafe(CWindow* pWindow, CWorkspace* pWorkspace) { |
