66 lines
2.0 KiB
Diff
66 lines
2.0 KiB
Diff
|
diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
|
||
|
index d7498e5..d1800a8 100644
|
||
|
--- a/src/steamcompmgr.cpp
|
||
|
+++ b/src/steamcompmgr.cpp
|
||
|
@@ -3271,7 +3271,7 @@ found:;
|
||
|
if ( window_has_commits( focus ) )
|
||
|
out->focusWindow = focus;
|
||
|
else
|
||
|
- focus->outdatedInteractiveFocus = true;
|
||
|
+ out->outdatedInteractiveFocus = true;
|
||
|
|
||
|
// Always update X's idea of focus, but still dirty
|
||
|
// the it being outdated so we can resolve that globally later.
|
||
|
@@ -5995,28 +5995,37 @@ bool handle_done_commit( steamcompmgr_win_t *w, xwayland_ctx_t *ctx, uint64_t co
|
||
|
// Window just got a new available commit, determine if that's worth a repaint
|
||
|
|
||
|
// If this is an overlay that we're presenting, repaint
|
||
|
- if ( w == global_focus.overlayWindow && w->opacity != TRANSLUCENT )
|
||
|
+ if ( gameFocused )
|
||
|
{
|
||
|
- hasRepaintNonBasePlane = true;
|
||
|
- }
|
||
|
+ if ( w == global_focus.overlayWindow && w->opacity != TRANSLUCENT )
|
||
|
+ {
|
||
|
+ hasRepaintNonBasePlane = true;
|
||
|
+ }
|
||
|
|
||
|
- if ( w == global_focus.notificationWindow && w->opacity != TRANSLUCENT )
|
||
|
- {
|
||
|
- hasRepaintNonBasePlane = true;
|
||
|
+ if ( w == global_focus.notificationWindow && w->opacity != TRANSLUCENT )
|
||
|
+ {
|
||
|
+ hasRepaintNonBasePlane = true;
|
||
|
+ }
|
||
|
}
|
||
|
-
|
||
|
- // If this is an external overlay, repaint
|
||
|
- if ( w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT )
|
||
|
+ if ( ctx )
|
||
|
{
|
||
|
- hasRepaintNonBasePlane = true;
|
||
|
+ if ( ctx->focus.outdatedInteractiveFocus )
|
||
|
+ {
|
||
|
+ MakeFocusDirty();
|
||
|
+ ctx->focus.outdatedInteractiveFocus = false;
|
||
|
+ }
|
||
|
}
|
||
|
-
|
||
|
- if ( w->outdatedInteractiveFocus )
|
||
|
+ if ( global_focus.outdatedInteractiveFocus )
|
||
|
{
|
||
|
MakeFocusDirty();
|
||
|
- w->outdatedInteractiveFocus = false;
|
||
|
- }
|
||
|
+ global_focus.outdatedInteractiveFocus = false;
|
||
|
|
||
|
+ // If this is an external overlay, repaint
|
||
|
+ if ( w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT )
|
||
|
+ {
|
||
|
+ hasRepaintNonBasePlane = true;
|
||
|
+ }
|
||
|
+ }
|
||
|
// If this is the main plane, repaint
|
||
|
if ( w == global_focus.focusWindow && !w->isSteamStreamingClient )
|
||
|
{
|