summaryrefslogtreecommitdiffstats
path: root/src/desktop.c
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-02-03 21:48:39 +0200
committerMarius Vlad <marius.vlad@collabora.com>2020-02-04 19:03:46 +0200
commit08ea4a2fec76b4bdd90b6072ff1002d0829afbed (patch)
tree74666413de15c37a3a76cffcc1f89861e955f2e4 /src/desktop.c
parent3950b7e787c19bd1917533081c8fb8d4331e4ef3 (diff)
layout: Do not delay mapping of desktop surface until commit time
On some older qtwayland versions (5.11) the weston_desktop_surface window geometry has all its members set to 0. The panel initialization takes place with the 'ready' request and this will result in an invalid x and y position for panels different than the top one. This patch alleviates that by not mapping the desktop surface in case we determine that the desktop_surface geometry is invalid and proceed on doing so when the surface is committed, which will allow to retrieve the correct desktop surface and set the proper location of the panel. That should be sufficient to display top/bottom panels until we switch a newer qtwayland version. This keeps the panel initialization in place, as to avoid any other changes in the future. Bug-AGL: SPEC-3136 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7388444ffe213f0524898cd3a5b175d90985ff1c
Diffstat (limited to 'src/desktop.c')
-rw-r--r--src/desktop.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/desktop.c b/src/desktop.c
index ed6208f..a637ddd 100644
--- a/src/desktop.c
+++ b/src/desktop.c
@@ -120,8 +120,20 @@ desktop_committed(struct weston_desktop_surface *dsurface,
{
struct ivi_surface *surface =
weston_desktop_surface_get_user_data(dsurface);
- if (surface->role == IVI_SURFACE_ROLE_DESKTOP)
+ weston_compositor_schedule_repaint(surface->ivi->compositor);
+
+ switch (surface->role) {
+ case IVI_SURFACE_ROLE_DESKTOP:
ivi_layout_desktop_committed(surface);
+ break;
+ case IVI_SURFACE_ROLE_PANEL:
+ ivi_layout_panel_committed(surface);
+ break;
+ case IVI_SURFACE_ROLE_NONE:
+ case IVI_SURFACE_ROLE_BACKGROUND:
+ default: /* fall through */
+ break;
+ }
}
static void