diff options
| author | Felix Dick <felix.dick@web.de> | 2022-10-10 01:46:22 +0200 |
|---|---|---|
| committer | Felix Dick <felix.dick@web.de> | 2022-10-10 02:45:40 +0200 |
| commit | 7e781f24c5140e3554a45ff236a339647fba1c34 (patch) | |
| tree | 4c4effecfdc5192387eb80c033e09e6f8719e171 /src | |
| parent | 3bf7c5aea1d20cc6a0fc95f920111548e7863af9 (diff) | |
| parent | cb687c208c116ea870f827d8b2ee963655599f1f (diff) | |
Merge branch 'main' into simplify_matrix_calculations
Diffstat (limited to 'src')
| -rw-r--r-- | src/events/Popups.cpp | 4 | ||||
| -rw-r--r-- | src/helpers/SubsurfaceTree.cpp | 24 | ||||
| -rw-r--r-- | src/render/OpenGL.cpp | 11 |
3 files changed, 25 insertions, 14 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; } 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; - //SubsurfaceTree::destroySurfaceTree(subsurface->pChild); - //subsurface->pChild = nullptr; + g_pHyprRenderer->damageBox(&extents); + } + + // SubsurfaceTree::destroySurfaceTree(subsurface->pChild); + // subsurface->pChild = nullptr; + } } } diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 8a51a83a..e0cb28e2 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -528,7 +528,6 @@ CFramebuffer* CHyprOpenGLImpl::blurMainFramebufferWithDamage(float a, wlr_box* p float glMatrix[9]; wlr_matrix_multiply(glMatrix, m_RenderData.projection, matrix); - wlr_matrix_transpose(glMatrix, glMatrix); // get the config settings static auto *const PBLURSIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_size")->intValue; @@ -1278,7 +1277,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); } } |
