shell: fix set_transient

In the wl_shell_surface migration, I forgot to correct one cast in
shell_surface_set_transient(). 'parent_resource' is not a (struct
wlsc_surface *) but (struct shell_surface *).

This bug corrupts a wlsc_surface::output field, which later (in my
experiments) leads to a segmentation fault in surface_frame().

Fix the casts.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
dev
Pekka Paalanen 13 years ago committed by Kristian Høgsberg
parent 9b935c8239
commit 01e7b006db
  1. 3
      compositor/shell.c

@ -312,7 +312,8 @@ shell_surface_set_transient(struct wl_client *client,
{ {
struct shell_surface *shsurf = resource->data; struct shell_surface *shsurf = resource->data;
struct wlsc_surface *es = shsurf->surface; struct wlsc_surface *es = shsurf->surface;
struct wlsc_surface *pes = parent_resource->data; struct shell_surface *pshsurf = parent_resource->data;
struct wlsc_surface *pes = pshsurf->surface;
/* assign to parents output */ /* assign to parents output */
es->output = pes->output; es->output = pes->output;

Loading…
Cancel
Save