git: 5b4195285473 - main - x11-wm/hyprland: switch to wlroots-devel to simplify updates

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Fri, 01 Mar 2024 05:52:27 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5b4195285473aa598bd5c6dbd57b6ac9a27327fc

commit 5b4195285473aa598bd5c6dbd57b6ac9a27327fc
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2024-02-29 17:28:27 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2024-03-01 05:51:04 +0000

    x11-wm/hyprland: switch to wlroots-devel to simplify updates
    
    Giving up adding more workarounds after 0.36.0 introduced
    
    https://github.com/hyprwm/Hyprland/commit/301b48b74087
    https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/20935646168f
    
    ../src/render/Renderer.cpp:2501:9: error: use of undeclared identifier 'wlr_damage_ring_rotate_buffer'
     2501 |         wlr_damage_ring_rotate_buffer(&pMonitor->damage, m_pCurrentWlrBuffer, damage.pixman());
          |         ^
    
    This reverts commit 46de20d9e039ad2aacc3ee6d1434b9c2d604fb83.
    This reverts commit 474e59a13f289a0cade43c95ea01ef042f22665b.
---
 x11-wm/hyprland/Makefile                   |   8 ++
 x11-wm/hyprland/files/patch-system-wlroots |   2 +-
 x11-wm/hyprland/files/patch-wlroots-0.17   | 131 -----------------------------
 3 files changed, 9 insertions(+), 132 deletions(-)

diff --git a/x11-wm/hyprland/Makefile b/x11-wm/hyprland/Makefile
index ccf095e227d9..79a46656a14c 100644
--- a/x11-wm/hyprland/Makefile
+++ b/x11-wm/hyprland/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	hyprland
 DISTVERSIONPREFIX=	v
 DISTVERSION=	0.35.0
+PORTREVISION=	1
 CATEGORIES=	x11-wm wayland
 
 MAINTAINER=	jbeich@FreeBSD.org
@@ -107,6 +108,13 @@ bundled-libcxx:
 	@${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build
 .endif
 .endif # exists(/usr/lib/libc++.so)
+
+.include "${.CURDIR:H:H}/x11-toolkits/wlroots-devel/override.mk"
+post-patch:	wlroots-devel-patch
+wlroots-devel-patch:
+# Prefer <wlr/*> headers (used by <hyprland/*>) from wlroots-devel
+	@${REINPLACE_CMD} -i .devel "/subdirs/s|''|'../wlroots-devel/include', &|" \
+		${WRKSRC}/meson.build
 .include <bsd.port.mk>
 
 # XXX Work around !target(makesum)
diff --git a/x11-wm/hyprland/files/patch-system-wlroots b/x11-wm/hyprland/files/patch-system-wlroots
index 1373e3aff497..d466167166bd 100644
--- a/x11-wm/hyprland/files/patch-system-wlroots
+++ b/x11-wm/hyprland/files/patch-system-wlroots
@@ -8,7 +8,7 @@ Allow system wlroots to reduce maintenance (wlroots has tons of options)
  
 -wlroots = subproject('wlroots', default_options: ['examples=false', 'renderers=gles2'])
 -have_xwlr = wlroots.get_variable('features').get('xwayland')
-+wlroots = dependency('wlroots', version: ['>=0.17.0', '<0.18.0'], default_options: ['examples=false', 'renderers=gles2'])
++wlroots = dependency('wlroots', version: ['>=0.18.0', '<0.19.0'], default_options: ['examples=false', 'renderers=gles2'])
 +have_xwlr = wlroots.get_variable(pkgconfig: 'have_xwayland', internal: 'have_xwayland') == 'true'
  xcb_dep = dependency('xcb', required: get_option('xwayland'))
  
diff --git a/x11-wm/hyprland/files/patch-wlroots-0.17 b/x11-wm/hyprland/files/patch-wlroots-0.17
deleted file mode 100644
index f6297c42fc77..000000000000
--- a/x11-wm/hyprland/files/patch-wlroots-0.17
+++ /dev/null
@@ -1,131 +0,0 @@
-Revert to wlroots 0.17 API as 0.18 is a moving target, so hard to
-use as system package with more than one consumer.
-
-https://github.com/hyprwm/hyprland/commit/2ebfd0c7456e
-https://github.com/hyprwm/hyprland/commit/d2c3b23ace74
-https://github.com/hyprwm/hyprland/commit/33444e1e5ef8
-https://github.com/hyprwm/hyprland/commit/7b3d03938888
-
---- src/Compositor.cpp.orig	2024-02-05 01:59:02 UTC
-+++ src/Compositor.cpp
-@@ -115,7 +115,7 @@ void CCompositor::initServer() {
-     else
-         wlr_log_init(WLR_ERROR, Debug::wlrLog);
- 
--    m_sWLRBackend = wlr_backend_autocreate(m_sWLEventLoop, &m_sWLRSession);
-+    m_sWLRBackend = wlr_backend_autocreate(m_sWLDisplay, &m_sWLRSession);
- 
-     if (!m_sWLRBackend) {
-         Debug::log(CRIT, "m_sWLRBackend was NULL! This usually means wlroots could not find a GPU or enountered some issues.");
-@@ -169,7 +169,7 @@ void CCompositor::initServer() {
- 
-     m_sWLRGammaCtrlMgr = wlr_gamma_control_manager_v1_create(m_sWLDisplay);
- 
--    m_sWLROutputLayout = wlr_output_layout_create(m_sWLDisplay);
-+    m_sWLROutputLayout = wlr_output_layout_create();
- 
-     m_sWLROutputPowerMgr = wlr_output_power_manager_v1_create(m_sWLDisplay);
- 
-@@ -239,7 +239,7 @@ void CCompositor::initServer() {
- 
-     m_sWLRActivation = wlr_xdg_activation_v1_create(m_sWLDisplay);
- 
--    m_sWLRHeadlessBackend = wlr_headless_backend_create(m_sWLEventLoop);
-+    m_sWLRHeadlessBackend = wlr_headless_backend_create(m_sWLDisplay);
- 
-     m_sWLRSessionLockMgr = wlr_session_lock_manager_v1_create(m_sWLDisplay);
- 
-@@ -261,7 +261,7 @@ void CCompositor::initAllSignals() {
- 
- void CCompositor::initAllSignals() {
-     addWLSignal(&m_sWLRBackend->events.new_output, &Events::listen_newOutput, m_sWLRBackend, "Backend");
--    addWLSignal(&m_sWLRXDGShell->events.new_toplevel, &Events::listen_newXDGToplevel, m_sWLRXDGShell, "XDG Shell");
-+    addWLSignal(&m_sWLRXDGShell->events.new_surface, &Events::listen_newXDGToplevel, m_sWLRXDGShell, "XDG Shell");
-     addWLSignal(&m_sWLRCursor->events.motion, &Events::listen_mouseMove, m_sWLRCursor, "WLRCursor");
-     addWLSignal(&m_sWLRCursor->events.motion_absolute, &Events::listen_mouseMoveAbsolute, m_sWLRCursor, "WLRCursor");
-     addWLSignal(&m_sWLRCursor->events.button, &Events::listen_mouseButton, m_sWLRCursor, "WLRCursor");
---- src/Window.cpp.orig	2024-02-05 01:59:02 UTC
-+++ src/Window.cpp
-@@ -513,7 +513,7 @@ void CWindow::onMap() {
-         if (ctrl->pWlrHint->surface != m_pWLSurface.wlr())
-             continue;
- 
--        m_bTearingHint = ctrl->pWlrHint->current;
-+        m_bTearingHint = ctrl->pWlrHint->hint;
-         break;
-     }
- }
---- src/events/Misc.cpp.orig	2024-02-05 01:59:02 UTC
-+++ src/events/Misc.cpp
-@@ -255,9 +255,9 @@ void Events::listener_newTearingHint(wl_listener* list
-             const auto PWINDOW = g_pCompositor->getWindowFromSurface(TEARINGHINT->pWlrHint->surface);
- 
-             if (PWINDOW) {
--                PWINDOW->m_bTearingHint = (bool)TEARINGHINT->pWlrHint->current;
-+                PWINDOW->m_bTearingHint = TEARINGHINT->pWlrHint->hint;
- 
--                Debug::log(LOG, "Hint {:x} (window {}) set tearing hint to {}", (uintptr_t)TEARINGHINT->pWlrHint, PWINDOW, (uint32_t)TEARINGHINT->pWlrHint->current);
-+                Debug::log(LOG, "Hint {:x} (window {}) set tearing hint to {}", (uintptr_t)TEARINGHINT->pWlrHint, PWINDOW, (uint32_t)TEARINGHINT->pWlrHint->hint);
-             }
-         },
-         NEWCTRL, "TearingController");
---- src/events/Windows.cpp.orig	2023-11-30 15:20:08 UTC
-+++ src/events/Windows.cpp
-@@ -1171,10 +1171,12 @@ void Events::listener_newXDGToplevel(wl_listener* list
- 
- void Events::listener_newXDGToplevel(wl_listener* listener, void* data) {
-     // A window got opened
--    const auto XDGTOPLEVEL = (wlr_xdg_toplevel*)data;
--    const auto XDGSURFACE  = XDGTOPLEVEL->base;
-+    const auto XDGSURFACE = (wlr_xdg_surface*)data;
- 
--    Debug::log(LOG, "New XDG Toplevel created. (class: {})", XDGSURFACE->toplevel->app_id ? XDGSURFACE->toplevel->app_id : "null");
-+    if (XDGSURFACE->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL)
-+        return;
-+
-+    Debug::log(LOG, "New XDG Surface created. (class: {})", XDGSURFACE->toplevel->app_id ? XDGSURFACE->toplevel->app_id : "null");
- 
-     const auto PNEWWINDOW      = g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
-     PNEWWINDOW->m_uSurface.xdg = XDGSURFACE;
---- src/includes.hpp.orig	2023-11-30 15:20:08 UTC
-+++ src/includes.hpp
-@@ -105,7 +105,6 @@ extern "C" {
- #include <wlr/types/wlr_cursor_shape_v1.h>
- #include <wlr/types/wlr_tearing_control_v1.h>
- #include <wlr/util/box.h>
--#include <wlr/util/transform.h>
- #include <wlr/render/swapchain.h>
- #include <wlr/render/egl.h>
- 
---- src/managers/input/InputManager.cpp.orig	2024-02-05 01:59:02 UTC
-+++ src/managers/input/InputManager.cpp
-@@ -699,8 +699,7 @@ void CInputManager::onMouseWheel(wlr_pointer_axis_even
-             return;
-     }
- 
--    wlr_seat_pointer_notify_axis(g_pCompositor->m_sSeat.seat, e->time_msec, e->orientation, factor * e->delta, std::round(factor * e->delta_discrete), e->source,
--                                 WLR_AXIS_RELATIVE_DIRECTION_IDENTICAL);
-+    wlr_seat_pointer_notify_axis(g_pCompositor->m_sSeat.seat, e->time_msec, e->orientation, factor * e->delta, std::round(factor * e->delta_discrete), e->source);
- }
- 
- Vector2D CInputManager::getMouseCoordsInternal() {
---- src/render/Renderer.cpp.orig	2024-02-05 01:59:02 UTC
-+++ src/render/Renderer.cpp
-@@ -163,7 +163,7 @@ static void renderSurface(struct wlr_surface* surface,
- 
-     if (!g_pHyprRenderer->m_bBlockSurfaceFeedback) {
-         wlr_surface_send_frame_done(surface, RDATA->when);
--        wlr_presentation_surface_textured_on_output(surface, RDATA->pMonitor->output);
-+        wlr_presentation_surface_textured_on_output(g_pCompositor->m_sWLRPresentation, surface, RDATA->pMonitor->output);
-     }
- 
-     g_pHyprOpenGL->blend(true);
-@@ -923,7 +923,7 @@ bool CHyprRenderer::attemptDirectScanout(CMonitor* pMo
-     timespec now;
-     clock_gettime(CLOCK_MONOTONIC, &now);
-     wlr_surface_send_frame_done(PSURFACE, &now);
--    wlr_presentation_surface_scanned_out_on_output(PSURFACE, pMonitor->output);
-+    wlr_presentation_surface_scanned_out_on_output(g_pCompositor->m_sWLRPresentation, PSURFACE, pMonitor->output);
- 
-     if (pMonitor->state.commit()) {
-         if (!m_pLastScanout) {