summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-02-15 00:58:58 +0000
committerVaxry <vaxry@vaxry.net>2024-02-15 00:59:06 +0000
commitef490965a23e043692584ae26dec4f863c88f2f6 (patch)
tree6c816610a7eeb5bc3a611157fc11253b722dcae3 /src/protocols/Screencopy.cpp
parentb7ab15dc8083b87fe732d5baa43914a897c107fe (diff)
screencopy: attempt binding framebuffer before gathering format
Diffstat (limited to 'src/protocols/Screencopy.cpp')
-rw-r--r--src/protocols/Screencopy.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index e9ba45dd..b431bd3b 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -211,6 +211,18 @@ void CScreencopyProtocolManager::captureOutput(wl_client* client, wl_resource* r
PCLIENT->ref++;
g_pHyprRenderer->makeEGLCurrent();
+
+ if (g_pHyprOpenGL->m_mMonitorRenderResources.contains(PFRAME->pMonitor)) {
+ const auto RDATA = g_pHyprOpenGL->m_mMonitorRenderResources.at(PFRAME->pMonitor);
+ // bind the fb for its format. Suppress gl errors.
+#ifndef GLES2
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, RDATA.offloadFB.m_iFb);
+#else
+ glBindFramebuffer(GL_FRAMEBUFFER, RDATA.offloadFB.m_iFb);
+#endif
+ } else
+ Debug::log(ERR, "No RDATA in screencopy???");
+
PFRAME->shmFormat = g_pHyprOpenGL->getPreferredReadFormat(PFRAME->pMonitor);
if (PFRAME->shmFormat == DRM_FORMAT_INVALID) {
Debug::log(ERR, "No format supported by renderer in capture output");