aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--flake.lock6
-rw-r--r--nix/wlroots-nvidia.patch28
-rw-r--r--nix/wlroots.nix5
-rw-r--r--src/Compositor.cpp2
-rw-r--r--src/managers/input/InputManager.cpp16
-rw-r--r--src/render/Renderer.cpp6
m---------subprojects/wlroots0
-rw-r--r--subprojects/wlroots.wrap2
8 files changed, 45 insertions, 20 deletions
diff --git a/flake.lock b/flake.lock
index 3057c8c8..96f3f136 100644
--- a/flake.lock
+++ b/flake.lock
@@ -48,11 +48,11 @@
"flake": false,
"locked": {
"host": "gitlab.freedesktop.org",
- "lastModified": 1686753331,
- "narHash": "sha256-KovjVFwcuoUO0eu/UiWrnD3+m/K+SHSAVIz4xF9K1XA=",
+ "lastModified": 1689611045,
+ "narHash": "sha256-3RTOlQabkNetQ4O4UzSf57JPco9VGVHhSU1ls5uKBeE=",
"owner": "wlroots",
"repo": "wlroots",
- "rev": "7e7633abf09b362d0bad9e3fc650fd692369291d",
+ "rev": "7791ffe0584c4ac13c170e1661ce33bdbd4a9b9e",
"type": "gitlab"
},
"original": {
diff --git a/nix/wlroots-nvidia.patch b/nix/wlroots-nvidia.patch
new file mode 100644
index 00000000..130eb041
--- /dev/null
+++ b/nix/wlroots-nvidia.patch
@@ -0,0 +1,28 @@
+diff --git a/types/output/render.c b/types/output/render.c
+index 2e38919a..97f78608 100644
+--- a/types/output/render.c
++++ b/types/output/render.c
+@@ -240,22 +240,7 @@ bool output_pick_format(struct wlr_output *output,
+ }
+
+ uint32_t wlr_output_preferred_read_format(struct wlr_output *output) {
+- struct wlr_renderer *renderer = output->renderer;
+- assert(renderer != NULL);
+-
+- if (!renderer->impl->preferred_read_format || !renderer->impl->read_pixels) {
+- return DRM_FORMAT_INVALID;
+- }
+-
+- if (!wlr_output_attach_render(output, NULL)) {
+- return false;
+- }
+-
+- uint32_t fmt = renderer->impl->preferred_read_format(renderer);
+-
+- output_clear_back_buffer(output);
+-
+- return fmt;
++ return DRM_FORMAT_XRGB8888;
+ }
+
+ struct wlr_render_pass *wlr_output_begin_render_pass(struct wlr_output *output,
diff --git a/nix/wlroots.nix b/nix/wlroots.nix
index 7b05d9ff..2b93da9d 100644
--- a/nix/wlroots.nix
+++ b/nix/wlroots.nix
@@ -44,10 +44,7 @@ assert (lib.assertMsg (hidpiXWayland -> enableXWayland) ''
})
])
++ (lib.optionals nvidiaPatches [
- (fetchpatch {
- url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-nvidia-format-workaround.patch?h=hyprland-nvidia-screenshare-git";
- sha256 = "A9f1p5EW++mGCaNq8w7ZJfeWmvTfUm4iO+1KDcnqYX8=";
- })
+ ./wlroots-nvidia.patch
]);
postPatch =
(old.postPatch or "")
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 520b4342..cf4945a6 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -465,7 +465,7 @@ void CCompositor::startCompositor() {
throw std::runtime_error("The backend could not start!");
}
- wlr_xcursor_manager_set_cursor_image(m_sWLRXCursorMgr, "left_ptr", m_sWLRCursor);
+ wlr_cursor_set_xcursor(m_sWLRCursor, m_sWLRXCursorMgr, "left_ptr");
#ifdef USES_SYSTEMD
if (sd_booted() > 0)
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index f423fd0d..8cb7f330 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -300,9 +300,9 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
if (g_pHyprRenderer->m_bHasARenderedCursor) {
// TODO: maybe wrap?
if (m_ecbClickBehavior == CLICKMODE_KILL)
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "crosshair");
else
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "left_ptr");
}
m_bEmptyFocusCursorSet = true;
@@ -372,7 +372,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
// if (!m_bCursorImageOverridden) {
// if (!VECINRECT(m_vLastCursorPosFloored, pFoundWindow->m_vRealPosition.vec().x, pFoundWindow->m_vRealPosition.vec().y,
// pFoundWindow->m_vRealPosition.vec().x + pFoundWindow->m_vRealSize.vec().x, pFoundWindow->m_vRealPosition.vec().y + pFoundWindow->m_vRealSize.vec().y)) {
- // wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ // wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "left_ptr");
// cursorSurfaceInfo.bUsed = false;
// } else if (!cursorSurfaceInfo.bUsed) {
// cursorSurfaceInfo.bUsed = true;
@@ -478,7 +478,7 @@ void CInputManager::processMouseRequest(wlr_seat_pointer_request_set_cursor_even
}
if (m_ecbClickBehavior == CLICKMODE_KILL) {
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "crosshair");
return;
}
@@ -504,7 +504,7 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
case CLICKMODE_DEFAULT:
Debug::log(LOG, "SetClickMode: DEFAULT");
m_ecbClickBehavior = CLICKMODE_DEFAULT;
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "left_ptr");
break;
case CLICKMODE_KILL:
@@ -516,7 +516,7 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
refocus();
// set cursor
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "crosshair");
break;
default: break;
}
@@ -1444,7 +1444,7 @@ void CInputManager::destroySwitch(SSwitchDevice* pDevice) {
}
void CInputManager::setCursorImageUntilUnset(std::string name) {
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, name.c_str(), g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, name.c_str());
m_bCursorImageOverridden = true;
}
@@ -1454,7 +1454,7 @@ void CInputManager::unsetCursorImage() {
m_bCursorImageOverridden = false;
if (!g_pHyprRenderer->m_bWindowRequestedCursorHide)
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "left_ptr");
}
std::string CInputManager::deviceNameToInternalString(std::string in) {
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index f6a7132d..2345f02a 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -57,7 +57,7 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
if (!g_pHyprRenderer->m_bBlockSurfaceFeedback) {
wlr_surface_send_frame_done(surface, RDATA->when);
- wlr_presentation_surface_sampled_on_output(g_pCompositor->m_sWLRPresentation, surface, RDATA->pMonitor->output);
+ wlr_presentation_surface_scanned_out_on_output(g_pCompositor->m_sWLRPresentation, surface, RDATA->pMonitor->output);
}
// reset the UV, we might've set it above
@@ -779,7 +779,7 @@ bool CHyprRenderer::attemptDirectScanout(CMonitor* pMonitor) {
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
wlr_surface_send_frame_done(PSURFACE, &now);
- wlr_presentation_surface_sampled_on_output(g_pCompositor->m_sWLRPresentation, PSURFACE, pMonitor->output);
+ wlr_presentation_surface_scanned_out_on_output(g_pCompositor->m_sWLRPresentation, PSURFACE, pMonitor->output);
if (wlr_output_commit(pMonitor->output)) {
if (!m_pLastScanout) {
@@ -1918,7 +1918,7 @@ void CHyprRenderer::ensureCursorRenderingMode() {
m_bHasARenderedCursor = true;
if (!m_bWindowRequestedCursorHide)
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, "left_ptr");
Debug::log(LOG, "Showing the cursor (timeout)");
diff --git a/subprojects/wlroots b/subprojects/wlroots
-Subproject 7e7633abf09b362d0bad9e3fc650fd692369291
+Subproject 7791ffe0584c4ac13c170e1661ce33bdbd4a9b9
diff --git a/subprojects/wlroots.wrap b/subprojects/wlroots.wrap
index 8597d1c5..366b62f0 100644
--- a/subprojects/wlroots.wrap
+++ b/subprojects/wlroots.wrap
@@ -1,7 +1,7 @@
[wrap-git]
directory = wlroots
url = https://gitlab.freedesktop.org/wlroots/wlroots.git
-revision = 6e8fb5509f2c94d09d4efa0f9b1f40b37bf73863
+revision = 7791ffe0584c4ac13c170e1661ce33bdbd4a9b9e
depth = 1
diff_files = wlroots-meson-build.patch