mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-05-13 07:10:35 +01:00
52 lines
1.9 KiB
C++
52 lines
1.9 KiB
C++
#include "FramebufferElement.hpp"
|
|
#include "../OpenGL.hpp"
|
|
|
|
CFramebufferElement::CFramebufferElement(const CFramebufferElement::SFramebufferElementData& data_) : m_data(data_) {
|
|
;
|
|
}
|
|
|
|
void CFramebufferElement::draw(const CRegion& damage) {
|
|
CFramebuffer* fb = nullptr;
|
|
|
|
if (m_data.main) {
|
|
switch (m_data.framebufferID) {
|
|
case FB_MONITOR_RENDER_MAIN: fb = g_pHyprOpenGL->m_renderData.mainFB; break;
|
|
case FB_MONITOR_RENDER_CURRENT: fb = g_pHyprOpenGL->m_renderData.currentFB; break;
|
|
case FB_MONITOR_RENDER_OUT: fb = g_pHyprOpenGL->m_renderData.outFB; break;
|
|
}
|
|
|
|
if (!fb) {
|
|
Debug::log(ERR, "BUG THIS: CFramebufferElement::draw: main but null");
|
|
return;
|
|
}
|
|
|
|
} else {
|
|
switch (m_data.framebufferID) {
|
|
case FB_MONITOR_RENDER_EXTRA_OFFLOAD: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->offloadFB; break;
|
|
case FB_MONITOR_RENDER_EXTRA_MIRROR: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->mirrorFB; break;
|
|
case FB_MONITOR_RENDER_EXTRA_MIRROR_SWAP: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->mirrorSwapFB; break;
|
|
case FB_MONITOR_RENDER_EXTRA_OFF_MAIN: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->offMainFB; break;
|
|
case FB_MONITOR_RENDER_EXTRA_MONITOR_MIRROR: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->monitorMirrorFB; break;
|
|
case FB_MONITOR_RENDER_EXTRA_BLUR: fb = &g_pHyprOpenGL->m_renderData.pCurrentMonData->blurFB; break;
|
|
}
|
|
|
|
if (!fb) {
|
|
Debug::log(ERR, "BUG THIS: CFramebufferElement::draw: not main but null");
|
|
return;
|
|
}
|
|
}
|
|
|
|
fb->bind();
|
|
}
|
|
|
|
bool CFramebufferElement::needsLiveBlur() {
|
|
return false;
|
|
}
|
|
|
|
bool CFramebufferElement::needsPrecomputeBlur() {
|
|
return false;
|
|
}
|
|
|
|
bool CFramebufferElement::undiscardable() {
|
|
return true;
|
|
}
|