From 496e37d044a091baa2097c6e8e1d4a3992e11ec6 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 9 Oct 2022 17:02:32 +0100 Subject: [PATCH 1/5] ensure texture safety in clearWithTex() --- src/render/OpenGL.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 1877a08e..96a3fdbd 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -1291,7 +1291,15 @@ void CHyprOpenGLImpl::clearWithTex() { static auto *const PRENDERTEX = &g_pConfigManager->getConfigValuePtr("misc:disable_hyprland_logo")->intValue; if (!*PRENDERTEX) { - renderTexture(m_mMonitorBGTextures[m_RenderData.pMonitor], &m_mMonitorRenderResources[m_RenderData.pMonitor].backgroundTexBox, 255, 0); + auto TEXIT = m_mMonitorBGTextures.find(m_RenderData.pMonitor); + + if (TEXIT == m_mMonitorBGTextures.end()) { + createBGTextureForMonitor(m_RenderData.pMonitor); + TEXIT = m_mMonitorBGTextures.find(m_RenderData.pMonitor); + } + + if (TEXIT != m_mMonitorBGTextures.end()) + renderTexture(TEXIT->second, &m_mMonitorRenderResources[m_RenderData.pMonitor].backgroundTexBox, 255, 0); } } From 0743dab3f05667afe187558fe06dcb07ec66c990 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 9 Oct 2022 17:09:11 +0100 Subject: [PATCH 2/5] use popup base surface instead of subsurface for addPopupGlobalCoords --- src/events/Popups.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/events/Popups.cpp b/src/events/Popups.cpp index 74865f95..afc1e7c8 100644 --- a/src/events/Popups.cpp +++ b/src/events/Popups.cpp @@ -32,8 +32,8 @@ void addPopupGlobalCoords(void* pPopup, int* x, int* y) { py -= curPopup->popup->base->current.geometry.y; } - if (curPopup->pSurfaceTree && curPopup->pSurfaceTree->pSurface && !curPopup->parentPopup && !curPopup->parentWindow) { - const auto EXTENTSSURFACE = pixman_region32_extents(&curPopup->pSurfaceTree->pSurface->input_region); + if (curPopup->popup && !curPopup->parentPopup && !curPopup->parentWindow) { + const auto EXTENTSSURFACE = pixman_region32_extents(&curPopup->popup->base->surface->input_region); px -= EXTENTSSURFACE->x1; py -= EXTENTSSURFACE->y1; } From 881f8282501845f57505015e85abbe668bfb740f Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 9 Oct 2022 17:23:12 +0100 Subject: [PATCH 3/5] better subsurface handling on unmaps --- src/helpers/SubsurfaceTree.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp index a5c7f0a0..349f5090 100644 --- a/src/helpers/SubsurfaceTree.cpp +++ b/src/helpers/SubsurfaceTree.cpp @@ -178,19 +178,23 @@ void Events::listener_unmapSubsurface(void* owner, void* data) { if (subsurface->pChild) { const auto PNODE = subsurface->pChild; - int lx = 0, ly = 0; - addSurfaceGlobalOffset(PNODE, &lx, &ly); + const auto IT = std::find_if(SubsurfaceTree::surfaceTreeNodes.begin(), SubsurfaceTree::surfaceTreeNodes.end(), [&](const SSurfaceTreeNode& other) { return &other == PNODE; }); - wlr_box extents = {lx, ly, 0, 0}; - if (PNODE->pSurface) { - extents.width = PNODE->pSurface->current.width; - extents.height = PNODE->pSurface->current.height; + if (IT != SubsurfaceTree::surfaceTreeNodes.end()) { + int lx = 0, ly = 0; + addSurfaceGlobalOffset(PNODE, &lx, &ly); - g_pHyprRenderer->damageBox(&extents); + wlr_box extents = {lx, ly, 0, 0}; + if (PNODE->pSurface) { + extents.width = PNODE->pSurface->current.width; + extents.height = PNODE->pSurface->current.height; + + g_pHyprRenderer->damageBox(&extents); + } + + // SubsurfaceTree::destroySurfaceTree(subsurface->pChild); + // subsurface->pChild = nullptr; } - - //SubsurfaceTree::destroySurfaceTree(subsurface->pChild); - //subsurface->pChild = nullptr; } } From 945b4d7139366d7e52bb49913a8667c08d0e567e Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 9 Oct 2022 21:29:54 +0100 Subject: [PATCH 4/5] update wlroots dep --- subprojects/wlroots | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/wlroots b/subprojects/wlroots index ff9c5280..ab834197 160000 --- a/subprojects/wlroots +++ b/subprojects/wlroots @@ -1 +1 @@ -Subproject commit ff9c52801f26eb85d2a51f12ad6d2819f97a66e6 +Subproject commit ab8341975e62b1f668d8c9779ec8e72d04718a99 From cb687c208c116ea870f827d8b2ee963655599f1f Mon Sep 17 00:00:00 2001 From: vaxerski Date: Sun, 9 Oct 2022 20:30:56 +0000 Subject: [PATCH 5/5] [gha] bump flake inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 8d7a308f..500f4549 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1665081174, - "narHash": "sha256-6hsmzdhdy8Kbvl5e0xZNE83pW3fKQvNiobJkM6KQrgA=", + "lastModified": 1665259268, + "narHash": "sha256-ONFhHBLv5nZKhwV/F2GOH16197PbvpyWhoO0AOyktkU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "598f83ebeb2235435189cf84d844b8b73e858e0f", + "rev": "c5924154f000e6306030300592f4282949b2db6c", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1665155573, - "narHash": "sha256-oAzkBNVm0N6JC4Jz9tfaF+l4K++zqDMOmxieemiyRnw=", + "lastModified": 1665331677, + "narHash": "sha256-3Dh1i11mHK80jx5figC1oh1V0rCjieh0Mj+MajXdbPw=", "owner": "wlroots", "repo": "wlroots", - "rev": "ff9c52801f26eb85d2a51f12ad6d2819f97a66e6", + "rev": "ab8341975e62b1f668d8c9779ec8e72d04718a99", "type": "gitlab" }, "original": {