shell: Fix 2 switcher crashes.

In case of no regular window, switcher will crash in switch_next()
due to "next == NULL" and in switcher_destroy() due to
"switcher->current == NULL".
tests: add backlight test

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
compositor: use smoother range for backlight control

now it goes from 0 to 255.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
cairo-util: load_cairo_surface returns NULL if loading the file fails.

Otherwise a non-existent file in the configuration crashes the desktop shell.

Signed-off-by: Ustun Ergenoglu <ego@ustun.fi>
compositor-wayland: use image loading code from shared/

Function weston_load_image() was deleted in f02a649a but the wayland
backend was not adapted to the new interface. This probably went
unoticed because the prototype for the missing function was not deleted
from compositor.h so the backend would compile without warnings.
compositor: allow multiple input_device_attach()'s with a nil buffer

Without this change, weston would crash whenever a nil buffer was
passed to input_device_attach() if the cursor sprite was not mapped.
While at it, change the unmapping code to use weston_surface_unmap().
compositor: properly restore keyboard_focus in notify_keyboard_focus()

Commit f992b2fc removed the saved keyboard focus logic to fix a crash
when the saved surface is destroyed. However, setting keyboard focus to
the first surface on the list ends up trying to set the focus to the
cursor surface most of the time. The end result is a NULL keyboard
focus.

This patch restores the saved keyboard focus logic and fixes the crash
mentioned above using a destroy listener.
evdev: use mtdev for multitouch devices

mtdev library translates all multitouch based devices to the slotted evdev
protocol. It provides an uniform interface for Weston, which eases mt
implementation when dealing with a big variety of devices.

Weston on drm now directly depends on such library.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
weston: Don't ask for EGL depth buffer if not needed

This makes the compositor and demo clients work on the current nouveau
nvfx driver. Obviously does not fix any clients that actually want a
depth buffer, but this does allow more people to at least try wayland.
weston: don't hang in wait()

Pausing weston (with ^Z in the shell) and putting it in the background
made it hang.
weston_surface: initialize pitch

Initializing pitch to 1 to avoid xxx/pitch errors
This won't influence the valid texture coordinate calculation, because
 in that case buffer_attach will provide the correct value.
compositor: Fix pointer type mismatch warnings
evdev: fix input lag when processing input from output repaint

When the compositor is in a repaint cycle, input is processed only once
per frame. However, a call to evdev_input_device_data() would handle at
most 8 events at time. When there was more than 8 events pending for a
given frame, input lag would occur. This was most visible with multi
touch input.

This patch changes the evdev_input_device_data() so that it will handle
all the events available in the fd. In order to do that, the fd is put
in non-blocking mode, so that it is possible to loop on read and stop
on EAGAIN instead of blocking.
Revert "automake: Don't fail the build if we can't setuid."

This reverts commit e7ad5cdcd2eb8a307ad9cf2efdfde76f2e83aeb7.

If you ask for setuid install and that fails you didn't get what you
asked for and we shouldn't just silently carry on.  If installing weston
somewhere in your home directory and don't want the setuid bit set,
disable that at configure time.
window.c: Tweak window decoration appearance

The old orange decorations were starting to look like clown shoes.
window.c: Increase drop shadow fluffiness
compositor: only update cursor sprite position on output repaint
compositor: use new drag icon listener for setting up drag surfaces
compositor: create an attach listener for weston_surfaces

For drag icons, and possibly cursor surfaces in the future, there is a
need to update information stored on the input device when an attach
happens with non-zero (sx,sy). To avoid adding input specific code into
surface_attach(), create a listener mechanism instead.
compositor: only update drag surfaces during output repaint

Drag surfaces were being updated in notify_* so that the relative
distance between the drag surface and the cursor hotspot was kept.
With surface attach listeners, we store this relative distance on
the input device and update when necessary.

Also, using a new drag icon listener, there's no need to update drag
surfaces on shell->map(), since they are setup as soon as necessary.