summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2025-02-02 22:25:29 +0300
committerGitHub <noreply@github.com>2025-02-02 20:25:29 +0100
commit31431a92714ab7f53c25d2ececb26c5b7264b7e3 (patch)
treeb5a9ff0e57493b503b09eb9f0e70e96075d70add /src/render/Renderer.cpp
parent70d94fec134c4b91916812901310e7765acf8405 (diff)
protocols: Support content-type-v1 proto (#9226)
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 42445728..6d7b409c 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -33,10 +33,14 @@
#include "pass/SurfacePassElement.hpp"
#include "debug/Log.hpp"
#include "protocols/ColorManagement.hpp"
+#if AQUAMARINE_VERSION_NUMBER > 702 // >0.7.2
+#include "protocols/types/ContentType.hpp"
+#endif
#include <hyprutils/utils/ScopeGuard.hpp>
using namespace Hyprutils::Utils;
using namespace Hyprutils::OS;
+using enum NContentType::eContentType;
extern "C" {
#include <xf86drm.h>
@@ -1192,7 +1196,7 @@ void CHyprRenderer::renderMonitor(PHLMONITOR pMonitor) {
pMonitor->tearingState.activelyTearing = shouldTear;
- if (*PDIRECTSCANOUT && !shouldTear) {
+ if ((*PDIRECTSCANOUT == 1 || (*PDIRECTSCANOUT == 2 && pMonitor->activeWorkspace->getFullscreenWindow()->getContentType() == CONTENT_TYPE_GAME)) && !shouldTear) {
if (pMonitor->attemptDirectScanout()) {
return;
} else if (!pMonitor->lastScanout.expired()) {
@@ -1509,6 +1513,14 @@ bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) {
}
}
+#if AQUAMARINE_VERSION_NUMBER > 702 // >0.7.2
+ if (pMonitor->activeWorkspace && pMonitor->activeWorkspace->m_bHasFullscreenWindow && pMonitor->activeWorkspace->m_efFullscreenMode == FSMODE_FULLSCREEN) {
+ const auto WINDOW = pMonitor->activeWorkspace->getFullscreenWindow();
+ pMonitor->output->state->setContentType(NContentType::toDRM(WINDOW->getContentType()));
+ } else
+ pMonitor->output->state->setContentType(NContentType::toDRM(CONTENT_TYPE_NONE));
+#endif
+
if (pMonitor->ctmUpdated) {
pMonitor->ctmUpdated = false;
pMonitor->output->state->setCTM(pMonitor->ctm);