summaryrefslogtreecommitdiff
path: root/src/render/OpenGL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/OpenGL.cpp')
-rw-r--r--src/render/OpenGL.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index 1963a548..eaea31be 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -701,6 +701,7 @@ void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP
initShaders();
m_RenderData.damage.set(damage);
+ m_RenderData.finalDamage.set(damage);
m_bFakeFrame = true;
@@ -714,7 +715,7 @@ void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP
m_RenderData.simplePass = true;
}
-void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFramebuffer* fb) {
+void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFramebuffer* fb, std::optional<CRegion> finalDamage) {
m_RenderData.pMonitor = pMonitor;
#ifndef GLES2
@@ -765,6 +766,7 @@ void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFrameb
m_RenderData.pCurrentMonData->monitorMirrorFB.release();
m_RenderData.damage.set(damage_);
+ m_RenderData.finalDamage.set(finalDamage.value_or(damage_));
m_bFakeFrame = fb;
@@ -789,7 +791,8 @@ void CHyprOpenGLImpl::end() {
// end the render, copy the data to the main framebuffer
if (m_bOffloadedFramebuffer) {
- m_bEndFrame = true;
+ m_RenderData.damage = m_RenderData.finalDamage;
+ m_bEndFrame = true;
CBox monbox = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
@@ -860,8 +863,9 @@ void CHyprOpenGLImpl::end() {
RASSERT(false, "glGetError at Opengl::end() returned GL_CONTEXT_LOST. Cannot continue until proper GPU reset handling is implemented.");
}
-void CHyprOpenGLImpl::setDamage(const CRegion& damage_) {
+void CHyprOpenGLImpl::setDamage(const CRegion& damage_, std::optional<CRegion> finalDamage) {
m_RenderData.damage.set(damage_);
+ m_RenderData.finalDamage.set(finalDamage.value_or(damage_));
}
// TODO notify user if bundled shader is newer than ~/.config override