From: Kristian Høgsberg Date: Tue, 7 Dec 2010 02:35:19 +0000 (-0500) Subject: Move focus tracking surface destroy callbacks into core X-Git-Tag: 0.85.0~336 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=02ef1c1aca7f05ffcd6081af4e1135186614b7d3;p=platform%2Fupstream%2Fwayland.git Move focus tracking surface destroy callbacks into core --- diff --git a/compositor/compositor.c b/compositor/compositor.c index fa60548..88b323f 100644 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@ -1161,37 +1161,12 @@ static const struct wl_drag_interface drag_interface = { drag_cancel, }; -static void -lose_pointer_focus(struct wl_listener *listener, - struct wl_surface *surface) -{ - struct wlsc_input_device *device = - container_of(listener, struct wlsc_input_device, - input_device.pointer_focus_listener); - uint32_t time; - - time = wl_display_get_time(wl_client_get_display(surface->client)); - wl_input_device_set_pointer_focus(&device->input_device, - NULL, time, 0, 0, 0, 0); -} - -static void -lose_keyboard_focus(struct wl_listener *listener, - struct wl_surface *surface) -{ - struct wlsc_input_device *device = - container_of(listener, struct wlsc_input_device, - input_device.keyboard_focus_listener); - uint32_t time; - - time = wl_display_get_time(wl_client_get_display(surface->client)); - wl_input_device_set_keyboard_focus(&device->input_device, NULL, time); -} - void wlsc_input_device_init(struct wlsc_input_device *device, struct wlsc_compositor *ec) { + wl_input_device_init(&device->input_device); + device->input_device.object.interface = &wl_input_device_interface; device->input_device.object.implementation = (void (**)(void)) &input_device_interface; @@ -1206,11 +1181,6 @@ wlsc_input_device_init(struct wlsc_input_device *device, device->hotspot_x = 16; device->hotspot_y = 16; - wl_list_init(&device->input_device.pointer_focus_listener.link); - device->input_device.pointer_focus_listener.func = lose_pointer_focus; - wl_list_init(&device->input_device.keyboard_focus_listener.link); - device->input_device.keyboard_focus_listener.func = lose_keyboard_focus; - wl_list_insert(ec->input_device_list.prev, &device->link); wlsc_input_device_set_pointer_image(device, WLSC_POINTER_LEFT_PTR); diff --git a/wayland/wayland-server.c b/wayland/wayland-server.c index 7a0268f..ad0c3af 100644 --- a/wayland/wayland-server.c +++ b/wayland/wayland-server.c @@ -317,6 +317,41 @@ wl_client_destroy(struct wl_client *client) free(client); } +static void +lose_pointer_focus(struct wl_listener *listener, + struct wl_surface *surface) +{ + struct wl_input_device *device = + container_of(listener, struct wl_input_device, + pointer_focus_listener); + uint32_t time; + + time = wl_display_get_time(wl_client_get_display(surface->client)); + wl_input_device_set_pointer_focus(device, NULL, time, 0, 0, 0, 0); +} + +static void +lose_keyboard_focus(struct wl_listener *listener, + struct wl_surface *surface) +{ + struct wl_input_device *device = + container_of(listener, struct wl_input_device, + keyboard_focus_listener); + uint32_t time; + + time = wl_display_get_time(wl_client_get_display(surface->client)); + wl_input_device_set_keyboard_focus(device, NULL, time); +} + +WL_EXPORT void +wl_input_device_init(struct wl_input_device *device) +{ + wl_list_init(&device->pointer_focus_listener.link); + device->pointer_focus_listener.func = lose_pointer_focus; + wl_list_init(&device->keyboard_focus_listener.link); + device->keyboard_focus_listener.func = lose_keyboard_focus; +} + WL_EXPORT void wl_input_device_set_pointer_focus(struct wl_input_device *device, struct wl_surface *surface, diff --git a/wayland/wayland-server.h b/wayland/wayland-server.h index 2b07261..9bedf73 100644 --- a/wayland/wayland-server.h +++ b/wayland/wayland-server.h @@ -195,6 +195,9 @@ void wl_resource_destroy(struct wl_resource *resource, struct wl_client *client); void +wl_input_device_init(struct wl_input_device *device); + +void wl_input_device_set_pointer_focus(struct wl_input_device *device, struct wl_surface *surface, uint32_t time,