@@ -271,91 +271,20 @@ shape_cow_for_window (MetaCompositorX11 *compositor_x11,
271271 }
272272}
273273
274- static void
275- on_redirected_monitor_changed (MetaWindow * window ,
276- int old_monitor ,
277- MetaCompositorX11 * compositor_x11 )
278- {
279- MetaBackend * backend = meta_get_backend ();
280- MetaMonitorManager * monitor_manager =
281- meta_backend_get_monitor_manager (backend );
282-
283- if (old_monitor >= 0 && window -> monitor &&
284- window -> monitor -> number != old_monitor )
285- {
286- g_signal_handlers_block_by_func (window ,
287- on_redirected_monitor_changed ,
288- compositor_x11 );
289-
290- if (!compositor_x11 -> randr_scale_disabled )
291- {
292- compositor_x11 -> randr_scale_disabled =
293- meta_monitor_manager_disable_scale_for_monitor (monitor_manager ,
294- window -> monitor );
295- }
296-
297- g_signal_handlers_unblock_by_func (window ,
298- on_redirected_monitor_changed ,
299- compositor_x11 );
300- }
301- else
302- shape_cow_for_window (META_COMPOSITOR_X11 (compositor_x11 ), window );
303- }
304-
305- static MetaWindow *
306- get_unredirectable_window (MetaCompositorX11 * compositor_x11 )
307- {
308- MetaCompositor * compositor = META_COMPOSITOR (compositor_x11 );
309- MetaWindowActor * window_actor ;
310- MetaWindowActorX11 * window_actor_x11 ;
311-
312- window_actor = meta_compositor_get_top_window_actor (compositor );
313- if (!window_actor )
314- return NULL ;
315-
316- window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor );
317- if (!meta_window_actor_x11_should_unredirect (window_actor_x11 ))
318- return NULL ;
319-
320- return meta_window_actor_get_meta_window (window_actor );
321- }
322-
323274static void
324275set_unredirected_window (MetaCompositorX11 * compositor_x11 ,
325276 MetaWindow * window )
326277{
327- MetaBackend * backend ;
328- MetaMonitorManager * monitor_manager ;
329278 MetaWindow * prev_unredirected_window = compositor_x11 -> unredirected_window ;
330279
331280 if (prev_unredirected_window == window )
332- {
333- if (!window && compositor_x11 -> randr_scale_disabled &&
334- !get_unredirectable_window (compositor_x11 ))
335- {
336- backend = meta_get_backend ();
337- monitor_manager = meta_backend_get_monitor_manager (backend );
338-
339- compositor_x11 -> randr_scale_disabled =
340- meta_monitor_manager_disable_scale_for_monitor (monitor_manager ,
341- NULL );
342- }
343-
344- return ;
345- }
346-
347- backend = meta_get_backend ();
348- monitor_manager = meta_backend_get_monitor_manager (backend );
281+ return ;
349282
350283 if (prev_unredirected_window )
351284 {
352285 MetaWindowActor * window_actor ;
353286 MetaWindowActorX11 * window_actor_x11 ;
354287
355- g_signal_handlers_disconnect_by_func (prev_unredirected_window ,
356- on_redirected_monitor_changed ,
357- compositor_x11 );
358-
359288 window_actor = meta_window_actor_from_window (prev_unredirected_window );
360289 window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor );
361290 meta_window_actor_x11_set_unredirected (window_actor_x11 , FALSE);
@@ -369,17 +298,6 @@ set_unredirected_window (MetaCompositorX11 *compositor_x11,
369298 MetaWindowActor * window_actor ;
370299 MetaWindowActorX11 * window_actor_x11 ;
371300
372- if (!compositor_x11 -> randr_scale_disabled )
373- {
374- compositor_x11 -> randr_scale_disabled =
375- meta_monitor_manager_disable_scale_for_monitor (monitor_manager ,
376- window -> monitor );
377- }
378-
379- g_signal_connect_object (window , "monitor-changed" ,
380- G_CALLBACK (on_redirected_monitor_changed ),
381- compositor_x11 , 0 );
382-
383301 window_actor = meta_window_actor_from_window (window );
384302 window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor );
385303 meta_window_actor_x11_set_unredirected (window_actor_x11 , TRUE);
@@ -391,11 +309,21 @@ maybe_unredirect_top_window (MetaCompositorX11 *compositor_x11)
391309{
392310 MetaCompositor * compositor = META_COMPOSITOR (compositor_x11 );
393311 MetaWindow * window_to_unredirect = NULL ;
312+ MetaWindowActor * window_actor ;
313+ MetaWindowActorX11 * window_actor_x11 ;
394314
395315 if (meta_compositor_is_unredirect_inhibited (compositor ))
396316 goto out ;
397317
398- window_to_unredirect = get_unredirectable_window (compositor_x11 );
318+ window_actor = meta_compositor_get_top_window_actor (compositor );
319+ if (!window_actor )
320+ goto out ;
321+
322+ window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor );
323+ if (!meta_window_actor_x11_should_unredirect (window_actor_x11 ))
324+ goto out ;
325+
326+ window_to_unredirect = meta_window_actor_get_meta_window (window_actor );
399327
400328out :
401329 set_unredirected_window (compositor_x11 , window_to_unredirect );
0 commit comments