mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-03-01 07:13:26 +00:00
fix(gamescope): force dpms even if steamui is not blanking (#1886)
This commit is contained in:
parent
7974f1578c
commit
11278029a9
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Name: gamescope
|
Name: gamescope
|
||||||
Version: 100.%{gamescope_tag}
|
Version: 100.%{gamescope_tag}
|
||||||
Release: 13.bazzite
|
Release: 14.bazzite
|
||||||
Summary: Micro-compositor for video games on Wayland
|
Summary: Micro-compositor for video games on Wayland
|
||||||
|
|
||||||
License: BSD
|
License: BSD
|
||||||
|
@ -967,9 +967,9 @@ Subject: feat: add DPMS support through an Atom
|
|||||||
---
|
---
|
||||||
src/Backends/DRMBackend.cpp | 16 +++++++++++++---
|
src/Backends/DRMBackend.cpp | 16 +++++++++++++---
|
||||||
src/rendervulkan.hpp | 2 ++
|
src/rendervulkan.hpp | 2 ++
|
||||||
src/steamcompmgr.cpp | 11 ++++++++++-
|
src/steamcompmgr.cpp | 18 +++++++++++++++---
|
||||||
src/xwayland_ctx.hpp | 1 +
|
src/xwayland_ctx.hpp | 1 +
|
||||||
4 files changed, 26 insertions(+), 4 deletions(-)
|
4 files changed, 31 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
|
diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
|
||||||
index f014be9..6bb0b88 100644
|
index f014be9..6bb0b88 100644
|
||||||
@ -1040,7 +1040,7 @@ index b537170..ccabd88 100644
|
|||||||
struct Layer_t
|
struct Layer_t
|
||||||
{
|
{
|
||||||
diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
|
diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
|
||||||
index 6c8ce74..7589e3a 100644
|
index 6c8ce74..77c9f28 100644
|
||||||
--- a/src/steamcompmgr.cpp
|
--- a/src/steamcompmgr.cpp
|
||||||
+++ b/src/steamcompmgr.cpp
|
+++ b/src/steamcompmgr.cpp
|
||||||
@@ -169,6 +169,7 @@ bool g_bVRRRequested = false;
|
@@ -169,6 +169,7 @@ bool g_bVRRRequested = false;
|
||||||
@ -1051,15 +1051,36 @@ index 6c8ce74..7589e3a 100644
|
|||||||
|
|
||||||
static std::vector< steamcompmgr_win_t* > GetGlobalPossibleFocusWindows();
|
static std::vector< steamcompmgr_win_t* > GetGlobalPossibleFocusWindows();
|
||||||
static bool
|
static bool
|
||||||
|
@@ -2271,7 +2272,7 @@ bool ShouldDrawCursor()
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-paint_all(bool async)
|
||||||
|
+paint_all(bool async, bool dpms)
|
||||||
|
{
|
||||||
|
gamescope_xwayland_server_t *root_server = wlserver_get_xwayland_server(0);
|
||||||
|
xwayland_ctx_t *root_ctx = root_server->ctx.get();
|
||||||
@@ -2322,6 +2323,7 @@ paint_all(bool async)
|
@@ -2322,6 +2323,7 @@ paint_all(bool async)
|
||||||
frameInfo.outputEncodingEOTF = g_ColorMgmt.pending.outputEncodingEOTF;
|
frameInfo.outputEncodingEOTF = g_ColorMgmt.pending.outputEncodingEOTF;
|
||||||
frameInfo.allowVRR = cv_adaptive_sync;
|
frameInfo.allowVRR = cv_adaptive_sync;
|
||||||
frameInfo.bFadingOut = fadingOut;
|
frameInfo.bFadingOut = fadingOut;
|
||||||
+ frameInfo.dpms = g_bDPMS;
|
+ frameInfo.dpms = dpms;
|
||||||
|
|
||||||
// If the window we'd paint as the base layer is the streaming client,
|
// If the window we'd paint as the base layer is the streaming client,
|
||||||
// find the video underlay and put it up first in the scenegraph
|
// find the video underlay and put it up first in the scenegraph
|
||||||
@@ -5923,6 +5925,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
|
@@ -2494,6 +2496,11 @@ paint_all(bool async)
|
||||||
|
|
||||||
|
if ( !bValidContents || !GetBackend()->IsVisible() )
|
||||||
|
{
|
||||||
|
+ // If dpms, we do not need to display a frame.
|
||||||
|
+ // Force the display to refresh.
|
||||||
|
+ if ( dpms ) {
|
||||||
|
+ GetBackend()->Present( &frameInfo, async );
|
||||||
|
+ }
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5923,6 +5930,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
|
||||||
{
|
{
|
||||||
g_bRefreshHalveEnable = !!get_prop( ctx, ctx->root, ctx->atoms.gamescopeFrameHalveAtom, 0 );
|
g_bRefreshHalveEnable = !!get_prop( ctx, ctx->root, ctx->atoms.gamescopeFrameHalveAtom, 0 );
|
||||||
}
|
}
|
||||||
@ -1070,7 +1091,7 @@ index 6c8ce74..7589e3a 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -7094,6 +7100,7 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_
|
@@ -7094,6 +7105,7 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_
|
||||||
ctx->atoms.targets = XInternAtom(ctx->dpy, "TARGETS", false);
|
ctx->atoms.targets = XInternAtom(ctx->dpy, "TARGETS", false);
|
||||||
|
|
||||||
ctx->atoms.gamescopeFrameHalveAtom = XInternAtom( ctx->dpy, "GAMESCOPE_STEAMUI_HALFHZ", false );;
|
ctx->atoms.gamescopeFrameHalveAtom = XInternAtom( ctx->dpy, "GAMESCOPE_STEAMUI_HALFHZ", false );;
|
||||||
@ -1078,17 +1099,18 @@ index 6c8ce74..7589e3a 100644
|
|||||||
|
|
||||||
ctx->root_width = DisplayWidth(ctx->dpy, ctx->scr);
|
ctx->root_width = DisplayWidth(ctx->dpy, ctx->scr);
|
||||||
ctx->root_height = DisplayHeight(ctx->dpy, ctx->scr);
|
ctx->root_height = DisplayHeight(ctx->dpy, ctx->scr);
|
||||||
@@ -8001,7 +8008,9 @@ steamcompmgr_main(int argc, char **argv)
|
@@ -8061,9 +8073,9 @@ steamcompmgr_main(int argc, char **argv)
|
||||||
else
|
bShouldPaint = false;
|
||||||
eFlipType = FlipType::Normal;
|
}
|
||||||
|
|
||||||
- bool bShouldPaint = false;
|
- if ( bShouldPaint )
|
||||||
+ // force repaint if DPMS to avoid it not triggering
|
+ if ( bShouldPaint || (g_bDPMS && vblank) )
|
||||||
+ // if steam stops blanking before suspend
|
|
||||||
+ bool bShouldPaint = g_bDPMS;
|
|
||||||
|
|
||||||
if ( GetBackend()->IsVisible() )
|
|
||||||
{
|
{
|
||||||
|
- paint_all( eFlipType == FlipType::Async );
|
||||||
|
+ paint_all( eFlipType == FlipType::Async, g_bDPMS );
|
||||||
|
|
||||||
|
hasRepaint = false;
|
||||||
|
hasRepaintNonBasePlane = false;
|
||||||
diff --git a/src/xwayland_ctx.hpp b/src/xwayland_ctx.hpp
|
diff --git a/src/xwayland_ctx.hpp b/src/xwayland_ctx.hpp
|
||||||
index e4eec9f..2347cbb 100644
|
index e4eec9f..2347cbb 100644
|
||||||
--- a/src/xwayland_ctx.hpp
|
--- a/src/xwayland_ctx.hpp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user