https://bugs.kde.org/show_bug.cgi?id=483240

--- Comment #5 from fililip <t...@nitrosubs.live> ---
I managed to add an option to override this behavior with an environment
variable, LFC finally works as it did before.

diff --git a/src/core/renderloop.cpp b/src/core/renderloop.cpp
index 5e3a74c..de7b7d3 100644
--- a/src/core/renderloop.cpp
+++ b/src/core/renderloop.cpp
@@ -201,10 +201,12 @@ void RenderLoop::scheduleRepaint(Item *item)
     if (d->pendingRepaint) {
         return;
     }
+    bool isEnvVarSet = false;
+    const bool forceKernelLFC =
qEnvironmentVariableIntValue("KWIN_FORCE_KERNEL_LFC", &isEnvVarSet) != 0 &&
isEnvVarSet;
     const bool vrr = d->presentationMode == PresentationMode::AdaptiveSync ||
d->presentationMode == PresentationMode::AdaptiveAsync;
     if (vrr && workspace()->activeWindow() && d->output) {
         Window *const activeWindow = workspace()->activeWindow();
-        if (activeWindow->isOnOutput(d->output) && activeWindow->surfaceItem()
&& item != activeWindow->surfaceItem() &&
activeWindow->surfaceItem()->frameTimeEstimation() <=
std::chrono::nanoseconds(1'000'000'000) / 30) {
+        if (activeWindow->isOnOutput(d->output) && activeWindow->surfaceItem()
&& item != activeWindow->surfaceItem() && !forceKernelLFC &&
activeWindow->surfaceItem()->frameTimeEstimation() <=
std::chrono::nanoseconds(1'000'000'000) / 30) {
             return;
         }
     }

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to