On Tue, Sep 25, 2012 at 05:57:01PM +0300, Tiago Vignatti wrote:
> It fix https://bugs.freedesktop.org/show_bug.cgi?id=55259

Looks good, committed.

Kristian

> Signed-off-by: Tiago Vignatti <tiago.vigna...@intel.com>
> ---
>  src/shell.c |   16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/src/shell.c b/src/shell.c
> index 2afa1b3..67d1060 100644
> --- a/src/shell.c
> +++ b/src/shell.c
> @@ -3028,7 +3028,7 @@ shell_surface_configure(struct weston_surface *es, 
> int32_t sx, int32_t sy)
>       }
>  }
>  
> -static int launch_desktop_shell_process(struct desktop_shell *shell);
> +static void launch_desktop_shell_process(void *data);
>  
>  static void
>  desktop_shell_sigchld(struct weston_process *process, int status)
> @@ -3057,9 +3057,10 @@ desktop_shell_sigchld(struct weston_process *process, 
> int status)
>       launch_desktop_shell_process(shell);
>  }
>  
> -static int
> -launch_desktop_shell_process(struct desktop_shell *shell)
> +static void
> +launch_desktop_shell_process(void *data)
>  {
> +     struct desktop_shell *shell = data;
>       const char *shell_exe = LIBEXECDIR "/weston-desktop-shell";
>  
>       shell->child.client = weston_client_launch(shell->compositor,
> @@ -3068,8 +3069,7 @@ launch_desktop_shell_process(struct desktop_shell 
> *shell)
>                                                desktop_shell_sigchld);
>  
>       if (!shell->child.client)
> -             return -1;
> -     return 0;
> +             weston_log("not able to start %s\n", shell_exe);
>  }
>  
>  static void
> @@ -3697,6 +3697,7 @@ module_init(struct weston_compositor *ec)
>       struct desktop_shell *shell;
>       struct workspace **pws;
>       unsigned int i;
> +     struct wl_event_loop *loop;
>  
>       shell = malloc(sizeof *shell);
>       if (shell == NULL)
> @@ -3774,8 +3775,9 @@ module_init(struct weston_compositor *ec)
>               return -1;
>  
>       shell->child.deathstamp = weston_compositor_get_time();
> -     if (launch_desktop_shell_process(shell) != 0)
> -             return -1;
> +
> +     loop = wl_display_get_event_loop(ec->wl_display);
> +     wl_event_loop_add_idle(loop, launch_desktop_shell_process, shell);
>  
>       wl_list_for_each(seat, &ec->seat_list, link)
>               create_pointer_focus_listener(seat);
> -- 
> 1.7.9.5
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to