Fix a crash when opening two terminal windows and closing the first one.

To reproduce, launch the terminal, open a second window using Ctrl-Shift-N,
go back to the first window, and press Ctrl-D. The terminal's master FD gets
events even after being closed, causing terminal_destroy to be called twice
on the same object.

To fix this, I'm adding a function to stop watching an FD.
compositor: Fix rendering with shm transformed buffers

The implementation of buffer transformation didn't handle transformed
shm buffers properly. The partial texture upload was broken since the
damage is in surface coordinates that don't necessarily match the
buffer's coordinates. It also wouldn't handle the buffer stride
properly, resulting in incorrect rendering if it didn't match the
buffer's width.

The logic used for converting texture coordinates was generalized and
moved out of the renderer, since this conversion may be useful in other
places, such as the backends.
Fix build warnings from image_loader

Fix the following build warnings, and the build failures due to the
warning fixes:

  CC     libshared_cairo_la-image-loader.lo
image-loader.c:369:1: warning: no previous prototype for 'load_image'

  CC     x11_backend_la-compositor-x11.lo
compositor-x11.c: In function 'x11_output_set_icon':
compositor-x11.c:396:2: warning: implicit declaration of function 'load_image'
compositor-x11.c:396:8: warning: assignment makes pointer from integer without a cast

  CC     wayland_backend_la-compositor-wayland.lo
compositor-wayland.c: In function 'create_border':
compositor-wayland.c:97:2: warning: implicit declaration of function 'load_image'
compositor-wayland.c:97:8: warning: assignment makes pointer from integer without a cast

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
compositor-drm: Allow scanning out of opaque ARGB surfaces
window: Honour opaque field for windows without a frame

Since the opaque region was set in frame_resize_handler(), if a client
created a frameless window setting the toplevel widget as opaque would
have no effect.

This patch fixes this by moving the call wl_surface_set_opaque_region()
to idle_resize(), and changing the latter function to set the whole
window as opaque if its toplevel widget has the opaque flag set.
window: Let clients set buffer transformations

When a window's buffer transformation is set, its buffers are
reallocated with the appropriate size (i.e., with width and height
swapped in case of 90 or 270 degree rotation).
window: Add a way to retrieve a window's output transform

Add the output_get_transform() entry point and an output handler hook.
clients: Replace transformed with a toytoolkit implementation
window: change boolean to flags in toysurface::prepare()

Change the boolean parameter 'resize_hint' into a bitmask 'flags'.

Note, that this flags is very different to the other flags used in
creating the toysurface implementations. They do not make sense to mix
one way or the other. Prepare() cannot change the surface type, and
surface constructors do not care for dynamic hint flags.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
window: Add a widget default cursor convenience helper

In a few cases, we set a motion handler just to be able to set a fixed
cursor.  This adds a default cursor helper that can be used in those cases.
In case of the 'transformed' test case, we also avoid a brief flicker
of the pointer cursor, which is set on enter when the move grab is lifted.
xwayland: Standardize 'wxs' for weston_xserver variables

It was already being used in most of launcher.c and window-manager.c, so let's
make a standard everywhere now.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
xwm: Rename get_resources function

It's pure WM-related function, so use the same 'weston_wm_' prefix that others
in the same file are already using.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
xwayland: Remove useless structure

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
xwayland: Staticize weston_wm_set_selection and read_and_dump_property

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
gl-renderer: Force call to glUseProgram() when activating debug binding

When redrawing surfaces, use_shader() checks if the desired shader is
already in use to avoid a call to glUseProgram(). However, once the
debug binding is activated, that same check would prevent the usage of
the recompiled shaders until something cause a different shader to be
passed to use_shader().
text: add pre-edit styling support to protocol

Also add a separate preedit-cursor event and add a commit argument to
preedit-string to allow to support commit on reset. Fix editor and
keyboard example to adapt to the protocol changes.
text: add serial argument to text protocol

The serial argument will allow to ignore outdated events from before a
reset request.
editor: support commit on reset

Commit pending pre-edit text when focus-out or changing the cursor
location.
keyboard: Add support for pre-edit styling

Adds a button to the keyboard to support different styles of pre-edit
styling.
editor: add support for pre-edit styling

Add pango dependency to the example and use pango for text handling.