summaryrefslogtreecommitdiff
path: root/src/protocols/ToplevelExport.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/ToplevelExport.cpp
parentb7ab15dc8083b87fe732d5baa43914a897c107fe (diff)
screencopy: attempt binding framebuffer before gathering format
Diffstat (limited to 'src/protocols/ToplevelExport.cpp')
-rw-r--r--src/protocols/ToplevelExport.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp
index 25bab2ef..40265b26 100644
--- a/src/protocols/ToplevelExport.cpp
+++ b/src/protocols/ToplevelExport.cpp
@@ -178,6 +178,18 @@ void CToplevelExportProtocolManager::captureToplevel(wl_client* client, wl_resou
const auto PMONITOR = g_pCompositor->getMonitorFromID(PFRAME->pWindow->m_iMonitorID);
g_pHyprRenderer->makeEGLCurrent();
+
+ if (g_pHyprOpenGL->m_mMonitorRenderResources.contains(PMONITOR)) {
+ const auto RDATA = g_pHyprOpenGL->m_mMonitorRenderResources.at(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 toplevelexport???");
+
PFRAME->shmFormat = g_pHyprOpenGL->getPreferredReadFormat(PMONITOR);
if (PFRAME->shmFormat == DRM_FORMAT_INVALID) {
Debug::log(ERR, "No format supported by renderer in capture toplevel");