compositor: Add kill signal

For now it's being emitted only on the desktop shell kill binding.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
dev
Tiago Vignatti 12 years ago committed by Kristian Høgsberg
parent 920f1970a4
commit 1d01b01318
  1. 1
      src/compositor.c
  2. 1
      src/compositor.h
  3. 4
      src/shell.c

@ -2737,6 +2737,7 @@ weston_compositor_init(struct weston_compositor *ec,
ec->wl_display = display; ec->wl_display = display;
wl_signal_init(&ec->destroy_signal); wl_signal_init(&ec->destroy_signal);
wl_signal_init(&ec->activate_signal); wl_signal_init(&ec->activate_signal);
wl_signal_init(&ec->kill_signal);
wl_signal_init(&ec->lock_signal); wl_signal_init(&ec->lock_signal);
wl_signal_init(&ec->unlock_signal); wl_signal_init(&ec->unlock_signal);
wl_signal_init(&ec->show_input_panel_signal); wl_signal_init(&ec->show_input_panel_signal);

@ -294,6 +294,7 @@ struct weston_compositor {
struct weston_shell_interface shell_interface; struct weston_shell_interface shell_interface;
struct wl_signal activate_signal; struct wl_signal activate_signal;
struct wl_signal kill_signal;
struct wl_signal lock_signal; struct wl_signal lock_signal;
struct wl_signal unlock_signal; struct wl_signal unlock_signal;

@ -3505,12 +3505,16 @@ force_kill_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
{ {
struct wl_surface *focus_surface; struct wl_surface *focus_surface;
struct wl_client *client; struct wl_client *client;
struct desktop_shell *shell = data;
struct weston_compositor *compositor = shell->compositor;
pid_t pid; pid_t pid;
focus_surface = seat->keyboard->focus; focus_surface = seat->keyboard->focus;
if (!focus_surface) if (!focus_surface)
return; return;
wl_signal_emit(&compositor->kill_signal, focus_surface);
client = focus_surface->resource.client; client = focus_surface->resource.client;
wl_client_get_credentials(client, &pid, NULL, NULL); wl_client_get_credentials(client, &pid, NULL, NULL);

Loading…
Cancel
Save