diff --git a/spec_files/gamescope/chimeraos.patch b/spec_files/gamescope/chimeraos.patch
index 9a6b2ecd..5d7611d4 100644
--- a/spec_files/gamescope/chimeraos.patch
+++ b/spec_files/gamescope/chimeraos.patch
@@ -1,7 +1,7 @@
-From c06cdd847679c930ee6197514970bc21f523e853 Mon Sep 17 00:00:00 2001
+From e7a17c36620343d3bd21eba9c571f2551b8b69c0 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Fri, 17 May 2024 19:43:49 -0500
-Subject: [PATCH 01/22] Add touch-gestures to open up Steam menus
+Subject: [PATCH 01/21] Add touch-gestures to open up Steam menus
 
 ---
  src/main.cpp     |  5 +++++
@@ -10,7 +10,7 @@ Subject: [PATCH 01/22] Add touch-gestures to open up Steam menus
  3 files changed, 34 insertions(+)
 
 diff --git a/src/main.cpp b/src/main.cpp
-index cd4aeca..4b91c97 100644
+index 96484dc..2b5e9b3 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -108,6 +108,8 @@ const struct option *gamescope_options = (struct option[]){
@@ -40,18 +40,18 @@ index cd4aeca..4b91c97 100644
  					g_nXWaylandCount = atoi( optarg );
  				} else if (strcmp(opt_name, "composite-debug") == 0) {
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index ee6891d..62da656 100644
+index a2e1985..43b9023 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -73,6 +73,7 @@
- static LogScope wl_log("wlserver");
+@@ -77,6 +77,7 @@ using namespace std::literals;
+ extern gamescope::ConVar<bool> cv_drm_debug_disable_explicit_sync;
  
  //#define GAMESCOPE_SWAPCHAIN_DEBUG
 +gamescope::ConVar<bool> cv_touch_gestures( "enable_touch_gestures", false, "Enable/Disable the usage of touch gestures" );
  
  struct wlserver_t wlserver = {
  	.touch_down_ids = {}
-@@ -2568,6 +2569,33 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
+@@ -2598,6 +2599,33 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
  
  			if ( bAlwaysWarpCursor )
  				wlserver_mousewarp( tx, ty, time, false );
@@ -86,10 +86,10 @@ index ee6891d..62da656 100644
  		else if ( eMode == gamescope::TouchClickModes::Disabled )
  		{
 diff --git a/src/wlserver.hpp b/src/wlserver.hpp
-index db7d491..da67bf7 100644
+index 7a8c155..0859a21 100644
 --- a/src/wlserver.hpp
 +++ b/src/wlserver.hpp
-@@ -291,6 +291,7 @@ void wlserver_x11_surface_info_finish( struct wlserver_x11_surface_info *surf );
+@@ -306,6 +306,7 @@ void wlserver_x11_surface_info_finish( struct wlserver_x11_surface_info *surf );
  void wlserver_set_xwayland_server_mode( size_t idx, int w, int h, int refresh );
  
  extern std::atomic<bool> g_bPendingTouchMovement;
@@ -101,10 +101,10 @@ index db7d491..da67bf7 100644
 2.45.2
 
 
-From 34f22c6a52dbed8662132e4bdfd8a29dd1b7825c Mon Sep 17 00:00:00 2001
+From c781f3bea1940f76f28f4714ee4d10b9024909cd Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Fri, 17 May 2024 20:16:20 -0500
-Subject: [PATCH 02/22] Add bypass_steam_resolution to workaround the 720p/800p
+Subject: [PATCH 02/21] Add bypass_steam_resolution to workaround the 720p/800p
  restrictions Steam has for games
 
 ---
@@ -113,7 +113,7 @@ Subject: [PATCH 02/22] Add bypass_steam_resolution to workaround the 720p/800p
  2 files changed, 14 insertions(+)
 
 diff --git a/src/main.cpp b/src/main.cpp
-index 4b91c97..3d1057a 100644
+index 2b5e9b3..4e63245 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -129,6 +129,8 @@ const struct option *gamescope_options = (struct option[]){
@@ -134,10 +134,10 @@ index 4b91c97..3d1057a 100644
  	"  --xwayland-count               create N xwayland servers\n"
  	"  --prefer-vk-device             prefer Vulkan device for compositing (ex: 1002:7300)\n"
 diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
-index 9ee265d..bec4268 100644
+index e4738f9..8fe13fd 100644
 --- a/src/steamcompmgr.cpp
 +++ b/src/steamcompmgr.cpp
-@@ -349,6 +349,8 @@ bool g_bForceHDR10OutputDebug = false;
+@@ -354,6 +354,8 @@ bool g_bForceHDR10OutputDebug = false;
  gamescope::ConVar<bool> cv_hdr_enabled{ "hdr_enabled", false, "Whether or not HDR is enabled if it is available." };
  bool g_bHDRItmEnable = false;
  int g_nCurrentRefreshRate_CachedValue = 0;
@@ -146,7 +146,7 @@ index 9ee265d..bec4268 100644
  
  static void
  update_color_mgmt()
-@@ -5320,6 +5322,13 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
+@@ -5364,6 +5366,13 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
  			size_t server_idx = size_t{ xwayland_mode_ctl[ 0 ] };
  			int width = xwayland_mode_ctl[ 1 ];
  			int height = xwayland_mode_ctl[ 2 ];
@@ -160,7 +160,7 @@ index 9ee265d..bec4268 100644
  			bool allowSuperRes = !!xwayland_mode_ctl[ 3 ];
  
  			if ( !allowSuperRes )
-@@ -7166,6 +7175,8 @@ steamcompmgr_main(int argc, char **argv)
+@@ -7210,6 +7219,8 @@ steamcompmgr_main(int argc, char **argv)
  					bForceWindowsFullscreen = true;
  				} else if (strcmp(opt_name, "hdr-enabled") == 0) {
  					cv_hdr_enabled = true;
@@ -173,10 +173,10 @@ index 9ee265d..bec4268 100644
 2.45.2
 
 
-From 4c5657cca9a37fee0eee1d86ef3c2a6e5acef09c Mon Sep 17 00:00:00 2001
+From 06ea33eeac6023ac32a4e89cfb6a704e4fd28e9b Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Wed, 26 Jul 2023 20:46:29 -0500
-Subject: [PATCH 03/22] Add force external orientation.
+Subject: [PATCH 03/21] Add force external orientation.
 
 Co-authored-by: Bouke Sybren Haarsma <boukehaarsma23@gmail.com>
 ---
@@ -187,10 +187,10 @@ Co-authored-by: Bouke Sybren Haarsma <boukehaarsma23@gmail.com>
  4 files changed, 53 insertions(+), 1 deletion(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 92f01ca..4c72dc1 100644
+index ee2cbd3..f2a832d 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -536,6 +536,7 @@ bool g_bSupportsSyncObjs = false;
+@@ -537,6 +537,7 @@ bool g_bSupportsSyncObjs = false;
  
  extern gamescope::GamescopeModeGeneration g_eGamescopeModeGeneration;
  extern GamescopePanelOrientation g_DesiredInternalOrientation;
@@ -198,7 +198,7 @@ index 92f01ca..4c72dc1 100644
  
  extern bool g_bForceDisableColorMgmt;
  
-@@ -2023,6 +2024,10 @@ namespace gamescope
+@@ -2031,6 +2032,10 @@ namespace gamescope
  		{
  			m_ChosenOrientation = g_DesiredInternalOrientation;
  		}
@@ -210,7 +210,7 @@ index 92f01ca..4c72dc1 100644
  		{
  			if ( this->GetProperties().panel_orientation )
 diff --git a/src/main.cpp b/src/main.cpp
-index 3d1057a..fac3df2 100644
+index 4e63245..5e39e03 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -128,6 +128,7 @@ const struct option *gamescope_options = (struct option[]){
@@ -286,10 +286,10 @@ index 8cfe629..5492cae 100644
  enum class GamescopeUpscaleFilter : uint32_t
  {
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 62da656..2998aed 100644
+index 43b9023..f554554 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -2530,6 +2530,29 @@ static void apply_touchscreen_orientation(double *x, double *y )
+@@ -2560,6 +2560,29 @@ static void apply_touchscreen_orientation(double *x, double *y )
  			break;
  	}
  
@@ -323,10 +323,10 @@ index 62da656..2998aed 100644
 2.45.2
 
 
-From 897032bb4b8d8d5c11d67f9844a09a604b2c4333 Mon Sep 17 00:00:00 2001
+From 9e0fe1c9b9f82e63fb0255b32c1aefe3048c78e7 Mon Sep 17 00:00:00 2001
 From: Bouke Sybren Haarsma <boukehaarsma23@gmail.com>
 Date: Tue, 12 Mar 2024 00:07:57 +0100
-Subject: [PATCH 04/22] implement force-panel-type
+Subject: [PATCH 04/21] implement force-panel-type
 
 ---
  src/backend.h          |  3 +++
@@ -335,7 +335,7 @@ Subject: [PATCH 04/22] implement force-panel-type
  3 files changed, 20 insertions(+)
 
 diff --git a/src/backend.h b/src/backend.h
-index 9c2db15..046eb10 100644
+index 6c86349..920c92f 100644
 --- a/src/backend.h
 +++ b/src/backend.h
 @@ -17,6 +17,7 @@ struct wlr_buffer;
@@ -346,7 +346,7 @@ index 9c2db15..046eb10 100644
  
  namespace gamescope
  {
-@@ -213,6 +214,8 @@ namespace gamescope
+@@ -218,6 +219,8 @@ namespace gamescope
          // Dumb helper we should remove to support multi display someday.
          gamescope::GamescopeScreenType GetScreenType()
          {
@@ -356,10 +356,10 @@ index 9c2db15..046eb10 100644
                  return GetCurrentConnector()->GetScreenType();
  
 diff --git a/src/gamescope_shared.h b/src/gamescope_shared.h
-index f34174e..ed30d8c 100644
+index 863b03f..a11f598 100644
 --- a/src/gamescope_shared.h
 +++ b/src/gamescope_shared.h
-@@ -22,6 +22,7 @@ namespace gamescope
+@@ -25,6 +25,7 @@ namespace gamescope
  	{
  		GAMESCOPE_SCREEN_TYPE_INTERNAL,
  		GAMESCOPE_SCREEN_TYPE_EXTERNAL,
@@ -368,7 +368,7 @@ index f34174e..ed30d8c 100644
  		GAMESCOPE_SCREEN_TYPE_COUNT
  	};
 diff --git a/src/main.cpp b/src/main.cpp
-index fac3df2..8bea38c 100644
+index 5e39e03..2ac48ca 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -129,6 +129,7 @@ const struct option *gamescope_options = (struct option[]){
@@ -419,10 +419,10 @@ index fac3df2..8bea38c 100644
 2.45.2
 
 
-From 2178f85676ba25434e8c39adc3848e3f7355acec Mon Sep 17 00:00:00 2001
+From c3da8fe380e2f7c8c7152032d496d89eebd57ff6 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Fri, 17 May 2024 21:11:34 -0500
-Subject: [PATCH 05/22] wlserver: Fix an issue that would cause gamescope to
+Subject: [PATCH 05/21] wlserver: Fix an issue that would cause gamescope to
  crash when the touchscreen was used
 
 ---
@@ -430,10 +430,10 @@ Subject: [PATCH 05/22] wlserver: Fix an issue that would cause gamescope to
  1 file changed, 23 deletions(-)
 
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 2998aed..62da656 100644
+index f554554..43b9023 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -2530,29 +2530,6 @@ static void apply_touchscreen_orientation(double *x, double *y )
+@@ -2560,29 +2560,6 @@ static void apply_touchscreen_orientation(double *x, double *y )
  			break;
  	}
  
@@ -467,10 +467,10 @@ index 2998aed..62da656 100644
 2.45.2
 
 
-From 261124a5a85ad80b0d7b15926f230bacbca21b22 Mon Sep 17 00:00:00 2001
+From 7db5dc7e8ed1f1bfdae777c4c7f30928f3d96461 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Fri, 17 May 2024 21:56:55 -0500
-Subject: [PATCH 06/22] Add --custom-refresh-rates
+Subject: [PATCH 06/21] Add --custom-refresh-rates
 
 ---
  src/Backends/DRMBackend.cpp |  4 ++++
@@ -479,10 +479,10 @@ Subject: [PATCH 06/22] Add --custom-refresh-rates
  3 files changed, 36 insertions(+)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 4c72dc1..e4caebb 100644
+index f2a832d..32e8a78 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2125,6 +2125,10 @@ namespace gamescope
+@@ -2135,6 +2135,10 @@ namespace gamescope
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Jupiter"sv ) ||
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Galileo"sv );
  
@@ -494,7 +494,7 @@ index 4c72dc1..e4caebb 100644
  		{
  			static constexpr uint32_t kPIDGalileoSDC = 0x3003;
 diff --git a/src/main.cpp b/src/main.cpp
-index 8bea38c..a9e1969 100644
+index 2ac48ca..28bcc6f 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -132,6 +132,7 @@ const struct option *gamescope_options = (struct option[]){
@@ -579,10 +579,10 @@ index 5492cae..0207a51 100644
 2.45.2
 
 
-From db4804880ea0fdf810979aea3153e2f45dc97bfe Mon Sep 17 00:00:00 2001
+From 01eff9f4c19dbaa336faf4faf504b5bd9fde8d1c Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sat, 18 May 2024 08:44:38 -0500
-Subject: [PATCH 07/22] Add rotation gamescope_control command
+Subject: [PATCH 07/21] Add rotation gamescope_control command
 
 ---
  protocol/gamescope-control.xml | 18 ++++++++++++
@@ -621,10 +621,10 @@ index 012c48c..eab8a84 100644
    </interface>
  </protocol>
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index e4caebb..70d5cdf 100644
+index 32e8a78..f952b65 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2020,7 +2020,9 @@ namespace gamescope
+@@ -2028,7 +2028,9 @@ namespace gamescope
  
  	void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode )
  	{
@@ -635,7 +635,7 @@ index e4caebb..70d5cdf 100644
  		{
  			m_ChosenOrientation = g_DesiredInternalOrientation;
  		}
-@@ -2935,6 +2937,25 @@ bool drm_update_color_mgmt(struct drm_t *drm)
+@@ -2961,6 +2963,25 @@ bool drm_update_color_mgmt(struct drm_t *drm)
  	return true;
  }
  
@@ -662,10 +662,10 @@ index e4caebb..70d5cdf 100644
  {
  	drm->pending.mode_id = 0;
 diff --git a/src/gamescope_shared.h b/src/gamescope_shared.h
-index ed30d8c..d04a907 100644
+index a11f598..c1f8c79 100644
 --- a/src/gamescope_shared.h
 +++ b/src/gamescope_shared.h
-@@ -62,6 +62,16 @@ enum GamescopePanelOrientation
+@@ -65,6 +65,16 @@ enum GamescopePanelOrientation
  	GAMESCOPE_PANEL_ORIENTATION_AUTO,
  };
  
@@ -679,11 +679,11 @@ index ed30d8c..d04a907 100644
 +	GAMESCOPE_PANEL_EXTERNAL_ORIENTATION_AUTO,
 +};
 +
- // Disable partial composition for now until we get
- // composite priorities working in libliftoff + also
- // use the proper libliftoff composite plane system.
+ struct GamescopeTimelinePoint
+ {
+ 	struct wlr_drm_syncobj_timeline *pTimeline = nullptr;
 diff --git a/src/main.cpp b/src/main.cpp
-index a9e1969..4469ac1 100644
+index 28bcc6f..ab16459 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -397,6 +397,7 @@ static gamescope::GamescopeScreenType force_panel_type(const char *str)
@@ -695,10 +695,10 @@ index a9e1969..4469ac1 100644
  	} else {
  		fprintf( stderr, "gamescope: invalid value for --force-panel-type\n" );
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 62da656..96bb7fc 100644
+index 43b9023..e6d6a20 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -1101,6 +1101,55 @@ static void gamescope_control_take_screenshot( struct wl_client *client, struct
+@@ -1119,6 +1119,55 @@ static void gamescope_control_take_screenshot( struct wl_client *client, struct
  	} );
  }
  
@@ -754,7 +754,7 @@ index 62da656..96bb7fc 100644
  static void gamescope_control_handle_destroy( struct wl_client *client, struct wl_resource *resource )
  {
  	wl_resource_destroy( resource );
-@@ -1110,6 +1159,7 @@ static const struct gamescope_control_interface gamescope_control_impl = {
+@@ -1128,6 +1177,7 @@ static const struct gamescope_control_interface gamescope_control_impl = {
  	.destroy = gamescope_control_handle_destroy,
  	.set_app_target_refresh_cycle = gamescope_control_set_app_target_refresh_cycle,
  	.take_screenshot = gamescope_control_take_screenshot,
@@ -766,10 +766,10 @@ index 62da656..96bb7fc 100644
 2.45.2
 
 
-From ef9f07b932c8be1d391b9688b1b31edbb73e86ce Mon Sep 17 00:00:00 2001
+From 69dcb30139aae557093515722ddc5d47960a9c06 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sat, 18 May 2024 11:54:50 -0500
-Subject: [PATCH 08/22] Fix an issue that caused force-panel to not work
+Subject: [PATCH 08/21] Fix an issue that caused force-panel to not work
 
 ---
  protocol/gamescope-control.xml |   1 -
@@ -791,7 +791,7 @@ index eab8a84..7f5578b 100644
        <entry name="normal" value="1"/>
        <entry name="left" value="2"/>
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 70d5cdf..7af994e 100644
+index f952b65..d2e1e98 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
 @@ -318,6 +318,9 @@ namespace gamescope
@@ -805,10 +805,10 @@ index 70d5cdf..7af994e 100644
  				 m_pConnector->connector_type == DRM_MODE_CONNECTOR_LVDS ||
  				 m_pConnector->connector_type == DRM_MODE_CONNECTOR_DSI )
 diff --git a/src/gamescope_shared.h b/src/gamescope_shared.h
-index d04a907..ed30d8c 100644
+index c1f8c79..a11f598 100644
 --- a/src/gamescope_shared.h
 +++ b/src/gamescope_shared.h
-@@ -62,16 +62,6 @@ enum GamescopePanelOrientation
+@@ -65,16 +65,6 @@ enum GamescopePanelOrientation
  	GAMESCOPE_PANEL_ORIENTATION_AUTO,
  };
  
@@ -822,14 +822,14 @@ index d04a907..ed30d8c 100644
 -	GAMESCOPE_PANEL_EXTERNAL_ORIENTATION_AUTO,
 -};
 -
- // Disable partial composition for now until we get
- // composite priorities working in libliftoff + also
- // use the proper libliftoff composite plane system.
+ struct GamescopeTimelinePoint
+ {
+ 	struct wlr_drm_syncobj_timeline *pTimeline = nullptr;
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 96bb7fc..959f63b 100644
+index e6d6a20..666498e 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -74,6 +74,8 @@ static LogScope wl_log("wlserver");
+@@ -78,6 +78,8 @@ extern gamescope::ConVar<bool> cv_drm_debug_disable_explicit_sync;
  
  //#define GAMESCOPE_SWAPCHAIN_DEBUG
  gamescope::ConVar<bool> cv_touch_gestures( "enable_touch_gestures", false, "Enable/Disable the usage of touch gestures" );
@@ -838,7 +838,7 @@ index 96bb7fc..959f63b 100644
  
  struct wlserver_t wlserver = {
  	.touch_down_ids = {}
-@@ -1107,43 +1109,43 @@ static void gamescope_control_rotate_display( struct wl_client *client, struct w
+@@ -1125,43 +1127,43 @@ static void gamescope_control_rotate_display( struct wl_client *client, struct w
  	if (target_type == GAMESCOPE_CONTROL_DISPLAY_TARGET_TYPE_INTERNAL )
  	{
  		switch (orientation) {
@@ -914,7 +914,7 @@ index 96bb7fc..959f63b 100644
  		}
  	}
  	//drm_set_orientation(&g_DRM, isRotated);
-@@ -2554,34 +2556,61 @@ const std::shared_ptr<wlserver_vk_swapchain_feedback>& wlserver_surface_swapchai
+@@ -2584,34 +2586,61 @@ const std::shared_ptr<wlserver_vk_swapchain_feedback>& wlserver_surface_swapchai
  /* Handle the orientation of the touch inputs */
  static void apply_touchscreen_orientation(double *x, double *y )
  {
@@ -1006,20 +1006,20 @@ index 96bb7fc..959f63b 100644
 2.45.2
 
 
-From 8950969d8c62982f03bf8452a503276960f2fa33 Mon Sep 17 00:00:00 2001
+From 7cd3173fc56f3f3e6bcc3af121fc7eb2a7f65d26 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sat, 18 May 2024 13:50:57 -0500
-Subject: [PATCH 09/22] Fix an arithmetic error
+Subject: [PATCH 09/21] Fix an arithmetic error
 
 ---
  src/Backends/DRMBackend.cpp | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 7af994e..30150fb 100644
+index d2e1e98..8a739ff 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2023,9 +2023,9 @@ namespace gamescope
+@@ -2031,9 +2031,9 @@ namespace gamescope
  
  	void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode )
  	{
@@ -1036,30 +1036,29 @@ index 7af994e..30150fb 100644
 2.45.2
 
 
-From 3e51d6f0ae7603e322024783143329dc46835901 Mon Sep 17 00:00:00 2001
+From 5652820c268a3632653034ef5b6d6a820b07aad4 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sat, 18 May 2024 19:04:48 -0500
-Subject: [PATCH 10/22] Rework the touch gestures to be more smooth
+Subject: [PATCH 10/21] Rework the touch gestures to be more smooth
 
 ---
- src/wlserver.cpp | 90 +++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 69 insertions(+), 21 deletions(-)
+ src/wlserver.cpp | 89 +++++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 69 insertions(+), 20 deletions(-)
 
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 959f63b..131cd72 100644
+index 666498e..236f8d7 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -71,7 +71,8 @@
+@@ -71,6 +71,8 @@
  #include <set>
  
  static LogScope wl_log("wlserver");
--
 +bool pending_gesture = false;
 +bool pending_osk = false;
- //#define GAMESCOPE_SWAPCHAIN_DEBUG
- gamescope::ConVar<bool> cv_touch_gestures( "enable_touch_gestures", false, "Enable/Disable the usage of touch gestures" );
- extern GamescopePanelOrientation g_DesiredInternalOrientation;
-@@ -421,6 +422,39 @@ void wlserver_open_steam_menu( bool qam )
+ 
+ using namespace std::literals;
+ 
+@@ -439,6 +441,39 @@ void wlserver_open_steam_menu( bool qam )
  	XTestFakeKeyEvent(server->get_xdisplay(), XKeysymToKeycode( server->get_xdisplay(), XK_Control_L ), False, CurrentTime);
  }
  
@@ -1099,7 +1098,7 @@ index 959f63b..131cd72 100644
  static void wlserver_handle_pointer_button(struct wl_listener *listener, void *data)
  {
  	struct wlserver_pointer *pointer = wl_container_of( listener, pointer, button );
-@@ -2649,32 +2683,46 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
+@@ -2679,32 +2714,46 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
  			if ( bAlwaysWarpCursor )
  				wlserver_mousewarp( tx, ty, time, false );
  
@@ -1170,20 +1169,20 @@ index 959f63b..131cd72 100644
 2.45.2
 
 
-From d25a36dabc8e1d8144413980d915d0e71d313434 Mon Sep 17 00:00:00 2001
+From 0897536808301c73f0c694cc21e923c569e828a7 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sun, 19 May 2024 08:55:28 -0500
-Subject: [PATCH 11/22] Fix a typo for --bypass-steam-resolution
+Subject: [PATCH 11/21] Fix a typo for --bypass-steam-resolution
 
 ---
  src/steamcompmgr.cpp | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
-index bec4268..10c0a75 100644
+index 8fe13fd..c29403d 100644
 --- a/src/steamcompmgr.cpp
 +++ b/src/steamcompmgr.cpp
-@@ -7175,7 +7175,7 @@ steamcompmgr_main(int argc, char **argv)
+@@ -7219,7 +7219,7 @@ steamcompmgr_main(int argc, char **argv)
  					bForceWindowsFullscreen = true;
  				} else if (strcmp(opt_name, "hdr-enabled") == 0) {
  					cv_hdr_enabled = true;
@@ -1196,10 +1195,10 @@ index bec4268..10c0a75 100644
 2.45.2
 
 
-From 6d6afedd56a3f7b578cac1af7eaf93af931e0500 Mon Sep 17 00:00:00 2001
+From 044e5d20ddac5b8144e1937a2e0411189090e82a Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sun, 19 May 2024 11:48:52 -0500
-Subject: [PATCH 12/22] Handle gesture cases better to prevent unexpected
+Subject: [PATCH 12/21] Handle gesture cases better to prevent unexpected
  behavior
 
 ---
@@ -1207,7 +1206,7 @@ Subject: [PATCH 12/22] Handle gesture cases better to prevent unexpected
  1 file changed, 43 insertions(+), 20 deletions(-)
 
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 131cd72..9afe488 100644
+index 236f8d7..a900857 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
 @@ -71,7 +71,8 @@
@@ -1218,9 +1217,9 @@ index 131cd72..9afe488 100644
 +bool pending_gesture_x = false;
 +bool pending_gesture_y = false;
  bool pending_osk = false;
- //#define GAMESCOPE_SWAPCHAIN_DEBUG
- gamescope::ConVar<bool> cv_touch_gestures( "enable_touch_gestures", false, "Enable/Disable the usage of touch gestures" );
-@@ -2647,6 +2648,16 @@ static void apply_touchscreen_orientation(double *x, double *y )
+ 
+ using namespace std::literals;
+@@ -2678,6 +2679,16 @@ static void apply_touchscreen_orientation(double *x, double *y )
      *y = ty;
  }
  
@@ -1237,7 +1236,7 @@ index 131cd72..9afe488 100644
  void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool bAlwaysWarpCursor )
  {
  	assert( wlserver_is_lock_held() );
-@@ -2685,43 +2696,55 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
+@@ -2716,43 +2727,55 @@ void wlserver_touchmotion( double x, double y, int touch_id, uint32_t time, bool
  
  			if ( cv_touch_gestures )
  			{
@@ -1316,10 +1315,10 @@ index 131cd72..9afe488 100644
 2.45.2
 
 
-From 58e24b2f2ac33eb2388ef734835c6b02e437e563 Mon Sep 17 00:00:00 2001
+From 9eae1549e5a539dd2612ab5ca9581ce59e8b1f42 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Sun, 19 May 2024 18:14:23 -0500
-Subject: [PATCH 13/22] Add references to drm_set_orientation() and g_drm in
+Subject: [PATCH 13/21] Add references to drm_set_orientation() and g_drm in
  wlserver for rotation gamescope-control
 
 ---
@@ -1328,10 +1327,10 @@ Subject: [PATCH 13/22] Add references to drm_set_orientation() and g_drm in
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 9afe488..e963bea 100644
+index a900857..ee9f9d0 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -1183,8 +1183,9 @@ static void gamescope_control_rotate_display( struct wl_client *client, struct w
+@@ -1202,8 +1202,9 @@ static void gamescope_control_rotate_display( struct wl_client *client, struct w
  				wl_log.errorf("Invalid target orientation selected");
  		}
  	}
@@ -1344,10 +1343,10 @@ index 9afe488..e963bea 100644
  
  static void gamescope_control_handle_destroy( struct wl_client *client, struct wl_resource *resource )
 diff --git a/src/wlserver.hpp b/src/wlserver.hpp
-index da67bf7..688d05c 100644
+index 0859a21..31fca64 100644
 --- a/src/wlserver.hpp
 +++ b/src/wlserver.hpp
-@@ -294,7 +294,8 @@ extern std::atomic<bool> g_bPendingTouchMovement;
+@@ -309,7 +309,8 @@ extern std::atomic<bool> g_bPendingTouchMovement;
  extern gamescope::ConVar<bool> cv_touch_gestures;
  
  void wlserver_open_steam_menu( bool qam );
@@ -1361,10 +1360,10 @@ index da67bf7..688d05c 100644
 2.45.2
 
 
-From 768e5689e12c2f57766d27d72b4fad03d54fc01c Mon Sep 17 00:00:00 2001
+From 027b3a3b5940a8294c383c65e112247e63f2bcd8 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Mon, 20 May 2024 07:02:52 -0500
-Subject: [PATCH 14/22] Fix an issue where forced panel type orientations
+Subject: [PATCH 14/21] Fix an issue where forced panel type orientations
  weren't being applied
 
 ---
@@ -1372,10 +1371,10 @@ Subject: [PATCH 14/22] Fix an issue where forced panel type orientations
  1 file changed, 8 insertions(+), 7 deletions(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 30150fb..1a2668f 100644
+index 8a739ff..0866bb1 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2023,20 +2023,19 @@ namespace gamescope
+@@ -2031,20 +2031,19 @@ namespace gamescope
  
  	void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode )
  	{
@@ -1402,7 +1401,7 @@ index 30150fb..1a2668f 100644
  				switch ( this->GetProperties().panel_orientation->GetCurrentValue() )
  				{
  					case DRM_MODE_PANEL_ORIENTATION_NORMAL:
-@@ -2058,6 +2057,7 @@ namespace gamescope
+@@ -2066,6 +2065,7 @@ namespace gamescope
  
  			if ( this->GetScreenType() == gamescope::GAMESCOPE_SCREEN_TYPE_INTERNAL && pMode )
  			{
@@ -1410,7 +1409,7 @@ index 30150fb..1a2668f 100644
  				// Auto-detect portait mode for internal displays
  				m_ChosenOrientation = pMode->hdisplay < pMode->vdisplay
  					? GAMESCOPE_PANEL_ORIENTATION_270
-@@ -2065,6 +2065,7 @@ namespace gamescope
+@@ -2073,6 +2073,7 @@ namespace gamescope
  			}
  			else
  			{
@@ -1422,20 +1421,20 @@ index 30150fb..1a2668f 100644
 2.45.2
 
 
-From d6e4cf239f0f2113d1f3071a8d4766a810497617 Mon Sep 17 00:00:00 2001
+From beab0c8c80c3700d73cddd6806f15893969f0b40 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Mon, 20 May 2024 07:25:29 -0500
-Subject: [PATCH 15/22] add missing curly bracket...
+Subject: [PATCH 15/21] add missing curly bracket...
 
 ---
  src/Backends/DRMBackend.cpp | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 1a2668f..825812e 100644
+index 0866bb1..cdd600f 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2025,7 +2025,7 @@ namespace gamescope
+@@ -2033,7 +2033,7 @@ namespace gamescope
  	{
  		if ((this->GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL && g_DesiredInternalOrientation != GAMESCOPE_PANEL_ORIENTATION_AUTO) ||
  			(this->GetScreenType() == GAMESCOPE_SCREEN_TYPE_EXTERNAL && g_DesiredInternalOrientation != GAMESCOPE_PANEL_ORIENTATION_AUTO && g_bExternalForced)) {
@@ -1448,10 +1447,10 @@ index 1a2668f..825812e 100644
 2.45.2
 
 
-From 8983b3621dd81d4633a50a798b7794c6ae9d693b Mon Sep 17 00:00:00 2001
+From dd024170f46671f390091c9b4833d5563dd16251 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Mon, 20 May 2024 10:17:55 -0500
-Subject: [PATCH 16/22] Fix case where real externals were rotated with faked
+Subject: [PATCH 16/21] Fix case where real externals were rotated with faked
  external panels
 
 ---
@@ -1460,7 +1459,7 @@ Subject: [PATCH 16/22] Fix case where real externals were rotated with faked
  2 files changed, 64 insertions(+), 29 deletions(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 825812e..2668ad7 100644
+index cdd600f..bc4746b 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
 @@ -318,13 +318,20 @@ namespace gamescope
@@ -1488,7 +1487,7 @@ index 825812e..2668ad7 100644
  
  			return GAMESCOPE_SCREEN_TYPE_EXTERNAL;
  		}
-@@ -2023,11 +2030,11 @@ namespace gamescope
+@@ -2031,11 +2038,11 @@ namespace gamescope
  
  	void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode )
  	{
@@ -1504,10 +1503,10 @@ index 825812e..2668ad7 100644
  			m_ChosenOrientation = g_DesiredExternalOrientation;
  		}
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index e963bea..74d8209 100644
+index ee9f9d0..146088a 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -2596,29 +2596,57 @@ static void apply_touchscreen_orientation(double *x, double *y )
+@@ -2627,29 +2627,57 @@ static void apply_touchscreen_orientation(double *x, double *y )
      double ty = 0;
  
      // Use internal screen always for orientation purposes.
@@ -1591,10 +1590,10 @@ index e963bea..74d8209 100644
 2.45.2
 
 
-From 57057c9e5dc4ac026259726145d5b6e480368699 Mon Sep 17 00:00:00 2001
+From b77e5214db01ab13c0a01df5a11c2631ff8a1154 Mon Sep 17 00:00:00 2001
 From: Matthew Anderson <ruinairas1992@gmail.com>
 Date: Mon, 20 May 2024 16:30:47 -0500
-Subject: [PATCH 17/22] Add verbose panel logs and attempt to address all
+Subject: [PATCH 17/21] Add verbose panel logs and attempt to address all
  orientation issues
 
 ---
@@ -1604,7 +1603,7 @@ Subject: [PATCH 17/22] Add verbose panel logs and attempt to address all
  3 files changed, 39 insertions(+), 21 deletions(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index 2668ad7..9df20ae 100644
+index bc4746b..19819d4 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
 @@ -56,6 +56,7 @@ static constexpr bool k_bUseCursorPlane = false;
@@ -1632,7 +1631,7 @@ index 2668ad7..9df20ae 100644
  			return GAMESCOPE_SCREEN_TYPE_EXTERNAL;
  		}
  
-@@ -2030,7 +2032,19 @@ namespace gamescope
+@@ -2038,7 +2040,19 @@ namespace gamescope
  
  	void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode )
  	{
@@ -1654,10 +1653,10 @@ index 2668ad7..9df20ae 100644
  			m_ChosenOrientation = g_DesiredInternalOrientation;
  		}
 diff --git a/src/wlserver.cpp b/src/wlserver.cpp
-index 74d8209..3d4b239 100644
+index 146088a..cbaf89a 100644
 --- a/src/wlserver.cpp
 +++ b/src/wlserver.cpp
-@@ -2600,26 +2600,29 @@ static void apply_touchscreen_orientation(double *x, double *y )
+@@ -2631,26 +2631,29 @@ static void apply_touchscreen_orientation(double *x, double *y )
      {
  		if ( g_ForcedScreenType == gamescope::GAMESCOPE_SCREEN_TYPE_EXTERNAL )
  		{
@@ -1707,10 +1706,10 @@ index 74d8209..3d4b239 100644
  		}
  		else
 diff --git a/src/wlserver.hpp b/src/wlserver.hpp
-index 688d05c..ae55963 100644
+index 31fca64..82eb0e5 100644
 --- a/src/wlserver.hpp
 +++ b/src/wlserver.hpp
-@@ -296,6 +296,7 @@ extern gamescope::ConVar<bool> cv_touch_gestures;
+@@ -311,6 +311,7 @@ extern gamescope::ConVar<bool> cv_touch_gestures;
  void wlserver_open_steam_menu( bool qam );
  extern void drm_set_orientation( struct drm_t *drm, bool isRotated);
  extern drm_t g_DRM;
@@ -1722,17 +1721,17 @@ index 688d05c..ae55963 100644
 2.45.2
 
 
-From 41242b5ee7fa33cae22f30f5bcf5e27169bd8145 Mon Sep 17 00:00:00 2001
+From 7508322c78f06e1fe67ccfeb0abb733f4661126b Mon Sep 17 00:00:00 2001
 From: Bouke Sybren Haarsma <boukehaarsma23@gmail.com>
 Date: Tue, 28 May 2024 21:56:47 +0200
-Subject: [PATCH 18/22] add closing bracket
+Subject: [PATCH 18/21] add closing bracket
 
 ---
  src/main.cpp | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/src/main.cpp b/src/main.cpp
-index 4469ac1..e455225 100644
+index ab16459..58c77e5 100644
 --- a/src/main.cpp
 +++ b/src/main.cpp
 @@ -465,6 +465,7 @@ static enum gamescope::GamescopeBackend parse_backend_name(const char *str)
@@ -1747,10 +1746,10 @@ index 4469ac1..e455225 100644
 2.45.2
 
 
-From e528844eb590f8183fdfffaf9a7af39f33dc2213 Mon Sep 17 00:00:00 2001
+From d8b9484c8468f4a31556af8903f03cc428982eef Mon Sep 17 00:00:00 2001
 From: Bouke Sybren Haarsma <boukehaarsma23@gmail.com>
 Date: Wed, 3 Jan 2024 17:03:04 +0100
-Subject: [PATCH 19/22] remove hacky texture
+Subject: [PATCH 19/21] remove hacky texture
 
 This will use more hardware planes, causing some devices to composite yeilding lower framerates
 ---
@@ -1758,10 +1757,10 @@ This will use more hardware planes, causing some devices to composite yeilding l
  1 file changed, 17 insertions(+), 45 deletions(-)
 
 diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp
-index 10c0a75..1bc9008 100644
+index c29403d..cd6e690 100644
 --- a/src/steamcompmgr.cpp
 +++ b/src/steamcompmgr.cpp
-@@ -1579,7 +1579,7 @@ bool MouseCursor::getTexture()
+@@ -1610,7 +1610,7 @@ bool MouseCursor::getTexture()
  				{
  					pixels[i * image->width + j] = image->pixels[i * image->width + j];
  				}
@@ -1770,7 +1769,7 @@ index 10c0a75..1bc9008 100644
  			std::vector<uint32_t> resizeBuffer( nDesiredWidth * nDesiredHeight );
  			stbir_resize_uint8_srgb( (unsigned char *)pixels.data(),       image->width,  image->height,  0,
  									 (unsigned char *)resizeBuffer.data(), nDesiredWidth, nDesiredHeight, 0,
-@@ -2257,7 +2257,7 @@ paint_all(bool async)
+@@ -2290,7 +2290,7 @@ paint_all(bool async)
  					}
  				}
  			}
@@ -1779,7 +1778,7 @@ index 10c0a75..1bc9008 100644
  			int nOldLayerCount = frameInfo.layerCount;
  
  			uint32_t flags = 0;
-@@ -2265,7 +2265,7 @@ paint_all(bool async)
+@@ -2298,7 +2298,7 @@ paint_all(bool async)
  				flags |= PaintWindowFlag::BasePlane;
  			paint_window(w, w, &frameInfo, global_focus.cursor, flags);
  			update_touch_scaling( &frameInfo );
@@ -1788,7 +1787,7 @@ index 10c0a75..1bc9008 100644
  			// paint UI unless it's fully hidden, which it communicates to us through opacity=0
  			// we paint it to extract scaling coefficients above, then remove the layer if one was added
  			if ( w->opacity == TRANSLUCENT && bHasVideoUnderlay && nOldLayerCount < frameInfo.layerCount )
-@@ -2278,7 +2278,7 @@ paint_all(bool async)
+@@ -2311,7 +2311,7 @@ paint_all(bool async)
  				float opacityScale = g_bPendingFade
  					? 0.0f
  					: ((currentTime - fadeOutStartTime) / (float)g_FadeOutDuration);
@@ -1797,7 +1796,7 @@ index 10c0a75..1bc9008 100644
  				paint_cached_base_layer(g_HeldCommits[HELD_COMMIT_FADE], g_CachedPlanes[HELD_COMMIT_FADE], &frameInfo, 1.0f - opacityScale, false);
  				paint_window(w, w, &frameInfo, global_focus.cursor, PaintWindowFlag::BasePlane | PaintWindowFlag::FadeTarget | PaintWindowFlag::DrawBorders, opacityScale, override);
  			}
-@@ -2352,34 +2352,6 @@ paint_all(bool async)
+@@ -2385,34 +2385,6 @@ paint_all(bool async)
  		if ( overlay == global_focus.inputFocusWindow )
  			update_touch_scaling( &frameInfo );
  	}
@@ -1832,7 +1831,7 @@ index 10c0a75..1bc9008 100644
  
  	if (notification)
  	{
-@@ -2957,7 +2929,7 @@ win_maybe_a_dropdown( steamcompmgr_win_t *w )
+@@ -2994,7 +2966,7 @@ win_maybe_a_dropdown( steamcompmgr_win_t *w )
  	//
  	// TODO: Come back to me for original Age of Empires HD launcher.
  	// Does that use it? It wants blending!
@@ -1841,7 +1840,7 @@ index 10c0a75..1bc9008 100644
  	// Only do this if we have CONTROLPARENT right now. Some other apps, such as the
  	// Street Fighter V (310950) Splash Screen also use LAYERED and TOOLWINDOW, and we don't
  	// want that to be overlayed.
-@@ -2972,12 +2944,12 @@ win_maybe_a_dropdown( steamcompmgr_win_t *w )
+@@ -3009,12 +2981,12 @@ win_maybe_a_dropdown( steamcompmgr_win_t *w )
  
  	// Josh:
  	// The logic here is as follows. The window will be treated as a dropdown if:
@@ -1856,7 +1855,7 @@ index 10c0a75..1bc9008 100644
  	// 		- If the window has transient for, disregard it, as it is trying to redirecting us elsewhere
  	//        ie. a settings menu dialog popup or something.
  	//      - If the window has both skip taskbar and pager, treat it as a dialog.
-@@ -3069,7 +3041,7 @@ static bool is_good_override_candidate( steamcompmgr_win_t *override, steamcompm
+@@ -3106,7 +3078,7 @@ static bool is_good_override_candidate( steamcompmgr_win_t *override, steamcompm
  		return false;
  
  	return override != focus && override->GetGeometry().nX >= 0 && override->GetGeometry().nY >= 0;
@@ -1865,7 +1864,7 @@ index 10c0a75..1bc9008 100644
  
  static bool
  pick_primary_focus_and_override(focus_t *out, Window focusControlWindow, const std::vector<steamcompmgr_win_t*>& vecPossibleFocusWindows, bool globalFocus, const std::vector<uint32_t>& ctxFocusControlAppIDs)
-@@ -3210,7 +3182,7 @@ found:;
+@@ -3247,7 +3219,7 @@ found:;
  
  	if ( focus )
  	{
@@ -1874,7 +1873,7 @@ index 10c0a75..1bc9008 100644
  			out->focusWindow = focus;
  		else
  			focus->outdatedInteractiveFocus = true;
-@@ -3253,9 +3225,9 @@ found:;
+@@ -3290,9 +3262,9 @@ found:;
  					override_focus = fake_override;
  					goto found2;
  				}
@@ -1886,7 +1885,7 @@ index 10c0a75..1bc9008 100644
  		found2:;
  		resolveTransientOverrides( true );
  	}
-@@ -4514,7 +4486,7 @@ finish_destroy_win(xwayland_ctx_t *ctx, Window id, bool gone)
+@@ -4554,7 +4526,7 @@ finish_destroy_win(xwayland_ctx_t *ctx, Window id, bool gone)
  		{
  			if (gone)
  				finish_unmap_win (ctx, w);
@@ -1895,7 +1894,7 @@ index 10c0a75..1bc9008 100644
  			{
  				std::unique_lock lock( ctx->list_mutex );
  				*prev = w->xwayland().next;
-@@ -4571,7 +4543,7 @@ destroy_win(xwayland_ctx_t *ctx, Window id, bool gone, bool fade)
+@@ -4611,7 +4583,7 @@ destroy_win(xwayland_ctx_t *ctx, Window id, bool gone, bool fade)
  		global_focus.overrideWindow = nullptr;
  	if (x11_win(global_focus.fadeWindow) == id && gone)
  		global_focus.fadeWindow = nullptr;
@@ -1904,7 +1903,7 @@ index 10c0a75..1bc9008 100644
  	MakeFocusDirty();
  
  	finish_destroy_win(ctx, id, gone);
-@@ -5176,7 +5148,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
+@@ -5220,7 +5192,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev)
  		{
  			get_win_type(ctx, w);
  			MakeFocusDirty();
@@ -1913,7 +1912,7 @@ index 10c0a75..1bc9008 100644
  	}
  	if (ev->atom == ctx->atoms.sizeHintsAtom)
  	{
-@@ -6084,7 +6056,7 @@ void handle_done_commits_xdg( bool vblank, uint64_t vblank_idx )
+@@ -6130,7 +6102,7 @@ void handle_done_commits_xdg( bool vblank, uint64_t vblank_idx )
  			commits_before_their_time.push_back( entry );
  			continue;
  		}
@@ -1922,7 +1921,7 @@ index 10c0a75..1bc9008 100644
  		if (!entry.earliestPresentTime)
  		{
  			entry.earliestPresentTime = next_refresh_time;
-@@ -6938,7 +6910,7 @@ void update_mode_atoms(xwayland_ctx_t *root_ctx, bool* needs_flush = nullptr)
+@@ -6983,7 +6955,7 @@ void update_mode_atoms(xwayland_ctx_t *root_ctx, bool* needs_flush = nullptr)
  	}
  	XChangeProperty(root_ctx->dpy, root_ctx->root, root_ctx->atoms.gamescopeDisplayModeListExternal, XA_STRING, 8, PropModeReplace,
  		(unsigned char *)modes, strlen(modes) + 1 );
@@ -1931,7 +1930,7 @@ index 10c0a75..1bc9008 100644
  	uint32_t one = 1;
  	XChangeProperty(root_ctx->dpy, root_ctx->root, root_ctx->atoms.gamescopeDisplayIsExternal, XA_CARDINAL, 32, PropModeReplace,
  		(unsigned char *)&one, 1 );
-@@ -7696,7 +7668,7 @@ void steamcompmgr_send_frame_done_to_focus_window()
+@@ -7748,7 +7720,7 @@ void steamcompmgr_send_frame_done_to_focus_window()
  	{
  		wlserver_lock();
  		wlserver_send_frame_done( global_focus.focusWindow->xwayland().surface.main_surface , &now );
@@ -1944,20 +1943,20 @@ index 10c0a75..1bc9008 100644
 2.45.2
 
 
-From 1dbcfed76f4b80d8a9f6570819b5af7917c786fc Mon Sep 17 00:00:00 2001
+From 7eac5235caa7cb6664f637017879af95cde34ad7 Mon Sep 17 00:00:00 2001
 From: Kyle Gospodnetich <me@kylegospodneti.ch>
 Date: Tue, 2 Jul 2024 14:12:47 -0700
-Subject: [PATCH 21/22] Only change refresh rates on internal displays
+Subject: [PATCH 20/21] Only change refresh rates on internal displays
 
 ---
  src/Backends/DRMBackend.cpp | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index ff1858b..f5a452e 100644
+index 19819d4..476efef 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2152,7 +2152,7 @@ namespace gamescope
+@@ -2162,7 +2162,7 @@ namespace gamescope
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Jupiter"sv ) ||
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Galileo"sv );
  
@@ -1970,20 +1969,20 @@ index ff1858b..f5a452e 100644
 2.45.2
 
 
-From 3b0408f6ec7307e7a38f2c795b932d0dc05f2d72 Mon Sep 17 00:00:00 2001
+From 6db019cb96bde2d961d0408170817354915a51f5 Mon Sep 17 00:00:00 2001
 From: Kyle Gospodnetich <me@kylegospodneti.ch>
 Date: Tue, 2 Jul 2024 15:14:23 -0700
-Subject: [PATCH 22/22] Also check g_bExternalForced
+Subject: [PATCH 21/21] Also check g_bExternalForced
 
 ---
  src/Backends/DRMBackend.cpp | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp
-index f5a452e..d7f935d 100644
+index 476efef..cf2a613 100644
 --- a/src/Backends/DRMBackend.cpp
 +++ b/src/Backends/DRMBackend.cpp
-@@ -2152,9 +2152,9 @@ namespace gamescope
+@@ -2162,9 +2162,9 @@ namespace gamescope
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Jupiter"sv ) ||
  			( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Galileo"sv );