|
| 1 | +diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp |
| 2 | +index d7498e5..d1800a8 100644 |
| 3 | +--- a/src/steamcompmgr.cpp |
| 4 | ++++ b/src/steamcompmgr.cpp |
| 5 | +@@ -3271,7 +3271,7 @@ found:; |
| 6 | + if ( window_has_commits( focus ) ) |
| 7 | + out->focusWindow = focus; |
| 8 | + else |
| 9 | +- focus->outdatedInteractiveFocus = true; |
| 10 | ++ out->outdatedInteractiveFocus = true; |
| 11 | + |
| 12 | + // Always update X's idea of focus, but still dirty |
| 13 | + // the it being outdated so we can resolve that globally later. |
| 14 | +@@ -5995,28 +5995,37 @@ bool handle_done_commit( steamcompmgr_win_t *w, xwayland_ctx_t *ctx, uint64_t co |
| 15 | + // Window just got a new available commit, determine if that's worth a repaint |
| 16 | + |
| 17 | + // If this is an overlay that we're presenting, repaint |
| 18 | +- if ( w == global_focus.overlayWindow && w->opacity != TRANSLUCENT ) |
| 19 | ++ if ( gameFocused ) |
| 20 | + { |
| 21 | +- hasRepaintNonBasePlane = true; |
| 22 | +- } |
| 23 | ++ if ( w == global_focus.overlayWindow && w->opacity != TRANSLUCENT ) |
| 24 | ++ { |
| 25 | ++ hasRepaintNonBasePlane = true; |
| 26 | ++ } |
| 27 | + |
| 28 | +- if ( w == global_focus.notificationWindow && w->opacity != TRANSLUCENT ) |
| 29 | +- { |
| 30 | +- hasRepaintNonBasePlane = true; |
| 31 | ++ if ( w == global_focus.notificationWindow && w->opacity != TRANSLUCENT ) |
| 32 | ++ { |
| 33 | ++ hasRepaintNonBasePlane = true; |
| 34 | ++ } |
| 35 | + } |
| 36 | +- |
| 37 | +- // If this is an external overlay, repaint |
| 38 | +- if ( w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT ) |
| 39 | ++ if ( ctx ) |
| 40 | + { |
| 41 | +- hasRepaintNonBasePlane = true; |
| 42 | ++ if ( ctx->focus.outdatedInteractiveFocus ) |
| 43 | ++ { |
| 44 | ++ MakeFocusDirty(); |
| 45 | ++ ctx->focus.outdatedInteractiveFocus = false; |
| 46 | ++ } |
| 47 | + } |
| 48 | +- |
| 49 | +- if ( w->outdatedInteractiveFocus ) |
| 50 | ++ if ( global_focus.outdatedInteractiveFocus ) |
| 51 | + { |
| 52 | + MakeFocusDirty(); |
| 53 | +- w->outdatedInteractiveFocus = false; |
| 54 | +- } |
| 55 | ++ global_focus.outdatedInteractiveFocus = false; |
| 56 | + |
| 57 | ++ // If this is an external overlay, repaint |
| 58 | ++ if ( w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT ) |
| 59 | ++ { |
| 60 | ++ hasRepaintNonBasePlane = true; |
| 61 | ++ } |
| 62 | ++ } |
| 63 | + // If this is the main plane, repaint |
| 64 | + if ( w == global_focus.focusWindow && !w->isSteamStreamingClient ) |
| 65 | + { |
0 commit comments