Is handle_surface_created() still needed?

Alan Griffiths alan.griffiths at canonical.com
Mon Mar 9 09:58:57 UTC 2015


Background:

I've been looking at our legacy defaults for window management and came
across the handle_surface_created() method.

This is used to set the focus to a session after a surface has been
supplied to the client but before that surface has had a frame posted.
Hence, in a lot of cases we are setting focus to a surface that is
invisible to the user.

Both the unity downstreams (unity-system-compositor and qtmir) disable
this behaviour. USC replaces it with behaviour that waits for the first
posted frame and then sets the focus - which seems like it would make a
far better default. It isn't immediately obvious what Unity8 does, but
it doesn't use handle_surface_created().

I've spiked removing this function and it breaks a couple of our tests.
One (DefaultShell.
offers_create_surface_parameters_to_placement_strategy) is an
unitentional overconstraint and the other is an explicit test for the
above behaviour.

I don't see any regressions with e.g. "mir_demo_server --window-manager
canonical".

So do we really want this default behaviour and the function to support it?

Alan



More information about the Mir-devel mailing list