summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-10 13:21:00 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-10 13:21:00 +0200
commit515a363ecd8f870fb5df4f3b4d9666e1f2c26952 (patch)
tree783ab17c4dc8ab99bbe1af36bd394b595c71ef6b /src/render
parentfe54dcb4eb80496ba377efb21eb3edf1ee20ee62 (diff)
render: move lastFrameDamage to CMonitor
Diffstat (limited to 'src/render')
-rw-r--r--src/render/OpenGL.cpp4
-rw-r--r--src/render/OpenGL.hpp2
-rw-r--r--src/render/Renderer.cpp8
3 files changed, 5 insertions, 9 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index 6091aacf..9810a6fb 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -28,8 +28,6 @@ CHyprOpenGLImpl::CHyprOpenGLImpl() {
g_pHookSystem->hookDynamic("preRender", [&](void* self, std::any data) { preRender(std::any_cast<CMonitor*>(data)); });
- pixman_region32_init(&m_rOriginalDamageRegion);
-
RASSERT(eglMakeCurrent(wlr_egl_get_display(g_pCompositor->m_sWLREGL), EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT), "Couldn't unset current EGL!");
m_tGlobalTimer.reset();
@@ -149,7 +147,7 @@ void CHyprOpenGLImpl::end() {
// end the render, copy the data to the WLR framebuffer
if (!m_bFakeFrame) {
- pixman_region32_copy(m_RenderData.pDamage, &m_rOriginalDamageRegion);
+ pixman_region32_copy(m_RenderData.pDamage, &m_RenderData.pMonitor->lastFrameDamage);
if (!m_RenderData.pMonitor->mirrors.empty())
g_pHyprOpenGL->saveBufferForMirror(); // save with original damage region
diff --git a/src/render/OpenGL.hpp b/src/render/OpenGL.hpp
index 36aa612c..b696c8cb 100644
--- a/src/render/OpenGL.hpp
+++ b/src/render/OpenGL.hpp
@@ -141,8 +141,6 @@ class CHyprOpenGLImpl {
CWindow* m_pCurrentWindow = nullptr; // hack to get the current rendered window
- pixman_region32_t m_rOriginalDamageRegion; // used for storing the pre-expanded region
-
std::unordered_map<CWindow*, CFramebuffer> m_mWindowFramebuffers;
std::unordered_map<SLayerSurface*, CFramebuffer> m_mLayerFramebuffers;
std::unordered_map<CMonitor*, SMonitorRenderData> m_mMonitorRenderResources;
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 500af191..da47142c 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -934,7 +934,7 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
pMonitor->isMirror() /* why??? */) {
pixman_region32_union_rect(&damage, &damage, 0, 0, (int)pMonitor->vecTransformedSize.x * 10, (int)pMonitor->vecTransformedSize.y * 10); // wot?
- pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
+ pixman_region32_copy(&pMonitor->lastFrameDamage, &damage);
} else {
static auto* const PBLURENABLED = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
@@ -949,11 +949,11 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
// now, prep the damage, get the extended damage region
wlr_region_expand(&damage, &damage, BLURRADIUS); // expand for proper blurring
- pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
+ pixman_region32_copy(&pMonitor->lastFrameDamage, &damage);
wlr_region_expand(&damage, &damage, BLURRADIUS); // expand for proper blurring 2
} else {
- pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
+ pixman_region32_copy(&pMonitor->lastFrameDamage, &damage);
}
}
@@ -1035,7 +1035,7 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
pixman_region32_init(&frameDamage);
const auto TRANSFORM = wlr_output_transform_invert(pMonitor->output->transform);
- wlr_region_transform(&frameDamage, &g_pHyprOpenGL->m_rOriginalDamageRegion, TRANSFORM, (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y);
+ wlr_region_transform(&frameDamage, &pMonitor->lastFrameDamage, TRANSFORM, (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y);
if (*PDAMAGETRACKINGMODE == DAMAGE_TRACKING_NONE || *PDAMAGETRACKINGMODE == DAMAGE_TRACKING_MONITOR)
pixman_region32_union_rect(&frameDamage, &frameDamage, 0, 0, (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y);