Pārlūkot izejas kodu

Merge pull request #96714 from Riteo/dont-ask-me-why-they-are-different

Wayland: Make primary selection logic consistent with main clipboard
Rémi Verschelde 11 mēneši atpakaļ
vecāks
revīzija
d0dc3896ad
1 mainītis faili ar 5 papildinājumiem un 4 dzēšanām
  1. 5 4
      platform/linuxbsd/wayland/wayland_thread.cpp

+ 5 - 4
platform/linuxbsd/wayland/wayland_thread.cpp

@@ -169,12 +169,13 @@ Vector<uint8_t> WaylandThread::_wp_primary_selection_offer_read(struct wl_displa
 
 	int fds[2];
 	if (pipe(fds) == 0) {
-		// This function expects to return a string, so we can only ask for a MIME of
-		// "text/plain"
 		zwp_primary_selection_offer_v1_receive(p_offer, p_mime, fds[1]);
 
-		// Wait for the compositor to know about the pipe.
-		wl_display_roundtrip(p_display);
+		// NOTE: It's important to just flush and not roundtrip here as we would risk
+		// running some cleanup event, like for example `wl_data_device::leave`. We're
+		// going to wait for the message anyways as the read will probably block if
+		// the compositor doesn't read from the other end of the pipe.
+		wl_display_flush(p_display);
 
 		// Close the write end of the pipe, which we don't need and would otherwise
 		// just stall our next `read`s.