shell: Start the desktop-shell client in the idle handler
https://bugs.freedesktop.org/show_bug.cgi?id=55259 Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
This commit is contained in:
committed by
Kristian Høgsberg
parent
6f09338b0f
commit
b7dbbd6fc7
+9
-7
@@ -3029,7 +3029,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
|
static void
|
||||||
desktop_shell_sigchld(struct weston_process *process, int status)
|
desktop_shell_sigchld(struct weston_process *process, int status)
|
||||||
@@ -3058,9 +3058,10 @@ desktop_shell_sigchld(struct weston_process *process, int status)
|
|||||||
launch_desktop_shell_process(shell);
|
launch_desktop_shell_process(shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static void
|
||||||
launch_desktop_shell_process(struct desktop_shell *shell)
|
launch_desktop_shell_process(void *data)
|
||||||
{
|
{
|
||||||
|
struct desktop_shell *shell = data;
|
||||||
const char *shell_exe = LIBEXECDIR "/weston-desktop-shell";
|
const char *shell_exe = LIBEXECDIR "/weston-desktop-shell";
|
||||||
|
|
||||||
shell->child.client = weston_client_launch(shell->compositor,
|
shell->child.client = weston_client_launch(shell->compositor,
|
||||||
@@ -3069,8 +3070,7 @@ launch_desktop_shell_process(struct desktop_shell *shell)
|
|||||||
desktop_shell_sigchld);
|
desktop_shell_sigchld);
|
||||||
|
|
||||||
if (!shell->child.client)
|
if (!shell->child.client)
|
||||||
return -1;
|
weston_log("not able to start %s\n", shell_exe);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -3698,6 +3698,7 @@ module_init(struct weston_compositor *ec)
|
|||||||
struct desktop_shell *shell;
|
struct desktop_shell *shell;
|
||||||
struct workspace **pws;
|
struct workspace **pws;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
struct wl_event_loop *loop;
|
||||||
|
|
||||||
shell = malloc(sizeof *shell);
|
shell = malloc(sizeof *shell);
|
||||||
if (shell == NULL)
|
if (shell == NULL)
|
||||||
@@ -3775,8 +3776,9 @@ module_init(struct weston_compositor *ec)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
shell->child.deathstamp = weston_compositor_get_time();
|
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)
|
wl_list_for_each(seat, &ec->seat_list, link)
|
||||||
create_pointer_focus_listener(seat);
|
create_pointer_focus_listener(seat);
|
||||||
|
|||||||
Reference in New Issue
Block a user