diff options
| author | Simon Ser <contact@emersion.fr> | 2021-03-24 15:52:49 +0100 | 
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2021-03-25 19:34:47 +0100 | 
| commit | 80dbb9ba71bd7d035523010db9bce149c8dd7e02 (patch) | |
| tree | 7dfe1043aed43c3284e6463c16726f5dc015284f | |
| parent | 8ecc557ab0770b2a890ff956c27ea9f5877873f3 (diff) | |
| download | wlroots-80dbb9ba71bd7d035523010db9bce149c8dd7e02.tar.xz | |
subsurface: immediately unlock cached state in set_desync
set_desync takes effect immediately without waiting for the next
wl_surface.commit request.
| -rw-r--r-- | types/wlr_surface.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/types/wlr_surface.c b/types/wlr_surface.c index 561f45e3..a472b844 100644 --- a/types/wlr_surface.c +++ b/types/wlr_surface.c @@ -525,10 +525,6 @@ static void subsurface_commit(struct wlr_subsurface *subsurface) {  		}  		subsurface->has_cache = true;  		subsurface->cached_seq = wlr_surface_lock_pending(surface); -	} else if (subsurface->has_cache) { -		wlr_surface_unlock_cached(surface, subsurface->cached_seq); -		subsurface->has_cache = false; -		subsurface->cached_seq = 0;  	}  } @@ -964,7 +960,13 @@ static void subsurface_handle_set_desync(struct wl_client *client,  		subsurface->synchronized = false;  		if (!subsurface_is_synchronized(subsurface)) { -			// TODO: do a synchronized commit to flush the cache +			if (subsurface->has_cache) { +				wlr_surface_unlock_cached(subsurface->surface, +					subsurface->cached_seq); +				subsurface->has_cache = false; +				subsurface->cached_seq = 0; +			} +  			subsurface_parent_commit(subsurface, true);  		}  	} | 
