libweston: improve frame callback handling with surfaces on multiple outputs

The frame callback of a surface is handled when the output assigned to the
surface is repainted. Right now, the output that shows the largest area of the
surface is chosen for each surface.
This can be a problem, when the outputs have different framerates.

For example, there are two outputs, one with 30fps and another with 60fps.
The surface for an application is visible on both outputs. If the output with
30fps is selected as the output for the surface, then the application may
produce only 30pfs even though the other output could show the full 60fps.

So instead of choosing the output with the largest area, pick the on with the
highest framerate.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
3 jobs for frame in 1 minute and 41 seconds (queued for 2 seconds)
latest
Status Job ID Name Coverage
  Container Prep
passed #3284488
container_prep

00:00:19

 
  Build
failed #3284489
build-native-meson-default-options

00:01:22

failed #3284490
build-native-meson-no-gl-renderer

00:00:59

 
Name Stage Failure
failed
build-native-meson-default-options Build
/root/.local/bin/meson test --no-rebuild --print-errorlogs
ninja: build stopped: subcommand failed.
Running after_script
Uploading artifacts for failed job
Uploading artifacts...
build-*/meson-logs: found 5 matching files

prefix-*: found 303 matching files

Uploading artifacts to coordinator... ok
id=3284489 responseStatus=201 Created token=xsEDwnEy
ERROR: Job failed: exit code 1
failed
build-native-meson-no-gl-renderer Build
/root/.local/bin/meson test --no-rebuild --print-errorlogs
ninja: build stopped: subcommand failed.
Running after_script
Uploading artifacts for failed job
Uploading artifacts...
build-*/meson-logs: found 5 matching files

prefix-*: found 191 matching files

Uploading artifacts to coordinator... ok
id=3284490 responseStatus=201 Created token=DKLsE33_
ERROR: Job failed: exit code 1