src/Makefile.am: correct compile failure for launcher-util.c

The following error message is generated during compile
In file included from launcher-util.c:43:0:
compositor.h:35:28: fatal error: wayland-server.h: No such file or directory
 #include <wayland-server.h>

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
terminal: add touch screen selection support

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
Reviewed-by: Kristian Hogsberg <hoegsberg@gmail.com>
Makefile.am: The rpi backend needs libsession-helper.la

Signed-off-by: Marco Barisione <marco.barisione@collabora.co.uk>
Makefile.am: The wayland rpi doesn't libsession-helper.la
src/data_device.c: add dnd support for touch screen

Adding the drag and drop grab interface for touch screen in
src/data-device.c, so the server can handle touch screen
drag and drop operation.

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
Reviewed-by: Kristian Hogsberg <hoegsberg@gmail.com>
client/dnd.c: add dnd support for touch screen in client

Adding the interface for touch screen event in clients/dnd.c, once
user touch down on this app, it will trigger a touch and drag
operation.

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
Reviewed-by: Kristian Hogsberg <hoegsberg@gmail.com>
distinguish touch screen and pointer dnd in client

Data device interface in client just handle with pointer's dnd.
If a touch screen trigger dnd, it will use pointer struct like i
nput->sx, input->sy, input->pointer_focus. So if pointer is moving
when touch screen trigeer a dnd, wrong behaviore will occur.
Before touch screen start dnd, system call touch_grab()
to mark the following drag and drop operation is generated by
touch screen.
Defined some common variables in struct input to track dnd.

Note, touch screen and pointer can't generate drag and drop at the
same time, becuae data device protocol can't identify the drag
and drop event is generated by touch screen or pointer.

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
Reviewed-by: Kristian Hogsberg <hoegsberg@gmail.com>
xdg_shell: Adding a new shell protocol.

xdg_shell is a protocol aimed to substitute wl_shell in the long term,
but will not be part of the wayland core protocol. It starts as a
non-stable API, aimed to be used as a development place at first, and
once features are defined as required by several desktop shells, we can
finally make it stable.

It provides mainly two new interfaces: xdg_surface and xdg_popup.

The xdg_surface interface implements a desktop-style window, that can be
moved, resized, maximized, etc. It provides a request for creating
child/parent relationship, called xdg_surface.set_transient_for.

The xdg_popup interface implements a desktop-style popup/menu. A
xdg_popup is always transient for another surface, and also has implicit
grab.
shell: Remove SHELL_SURFACE_FULLSCREEN and SHELL_SURFACE_MAXIMIZED.

These surface types don't exist anymore inside weston desktop shell
implementation. They are just exposed as wl_shell surface types, but
internally the implementation is done with surface states.

The previous
behavior (setting a surface type unsets another one) still happens when
using wl_shell. This change is mainly done as a refactory to allow
xdg-shell to use the same code.
shell: Change set_maximized to receive internal structures.

Change the parameters of set_maximized from wl_resource and wl_client to
shell_surface and weston_output. This will allow it to be used with
xdg-shell too.
xdg-shell: Implement part of the interface.

Basic requests are implemented, enough to get a surface displayed.
xdg-shell: Implementing maximized and fullscreen states.
xdg-shell: Implement set_transient_for request.

The implementation just sets a parent/child relationship between the
xdg_surface and its parent, passed as argument of this request. Stacking
might be affected (that's up to the compositor).

This implementation does not affect the code that handles the previous
transient surface type. It should still work as expected, but it's not
possible to set that surface type to a xdg_surface.
xdg-shell: Implement xdg_popup.
xdg-shell: Add surface size to configure.

Also emit configure on unset_maximized and unset_fullscreen.
xdg-shell: xdg_surface_set_output should only affect fullscreen.
westoy: Schedule a full resize when we add a subsurface

If a client adds a subsurface, we need to make sure it's allocated
properly, so queue a resize and redraw on the parent window.
westoy: Use subsurfaces for tooltips instead of transient windows

Transient windows, at least not as they are today, don't exist in
xdg_shell. Subsurfaces allow for specially placed surfaces relative
to a window, so use these instead.
westoy: Remove fullscreen methods

These aren't supported under xdg_shell, at least not right now.
If xdg_shell ever gets support for them, we can revert this commit
and adapt it.
westoy: Remove MAXIMIZED and FULLSCREEN as separate window types

xdg_shell changes this around so that they are flags on the remote
object itself, not separate surface types. Move to a system where
we calculate the state from the flags ourselves and set the appropriate
wl_shell_surface type.

When we port to xdg_shell, we'll drop these flags and simply sync
on the client.