shell: Fix never map fullscreen/transient surface.

If client send set_fullscreen/set_transient request before the first attach,
       compositor has no chance to map the surface due to "if (es->output == NULL)".

       You can pull it from git://gitorious.org/wayland-for-krh/weston.git map-bug
Alex Wu 13 years ago committed by Kristian Høgsberg
parent 31f9d0e8de
commit 88277d1422
  1. 8
      src/shell.c

@ -414,7 +414,7 @@ shell_surface_set_transient(struct wl_client *client,
return; return;
/* assign to parents output */ /* assign to parents output */
es->output = pes->output; shsurf->output = pes->output;
weston_surface_set_position(es, pes->geometry.x + x, weston_surface_set_position(es, pes->geometry.x + x,
pes->geometry.y + y); pes->geometry.y + y);
@ -500,18 +500,18 @@ shell_surface_set_fullscreen(struct wl_client *client,
/* FIXME: Fullscreen on first output */ /* FIXME: Fullscreen on first output */
/* FIXME: Handle output going away */ /* FIXME: Handle output going away */
output = get_default_output(es->compositor); output = get_default_output(es->compositor);
es->output = output;
shsurf->saved_x = es->geometry.x; shsurf->saved_x = es->geometry.x;
shsurf->saved_y = es->geometry.y; shsurf->saved_y = es->geometry.y;
shsurf->output = output;
shsurf->fullscreen_output = output; shsurf->fullscreen_output = output;
shsurf->type = SHELL_SURFACE_FULLSCREEN; shsurf->type = SHELL_SURFACE_FULLSCREEN;
wl_resource_post_event(resource, wl_resource_post_event(resource,
WL_SHELL_SURFACE_CONFIGURE, WL_SHELL_SURFACE_CONFIGURE,
weston_compositor_get_time(), 0, weston_compositor_get_time(), 0,
es->output->current->width, shsurf->output->current->width,
es->output->current->height); shsurf->output->current->height);
} }
static void static void

Loading…
Cancel
Save