profile/ivi/weston.git
11 years agoconfigure.ac: Change bugs.freedesktop.org product to Wayland
Scott Moreau [Wed, 13 Feb 2013 21:29:35 +0000 (14:29 -0700)]
configure.ac: Change bugs.freedesktop.org product to Wayland

Update the bug link. Thanks to Rune K. Svendsen for spotting this.

https://bugs.freedesktop.org/show_bug.cgi?id=60818

Conflicts:
configure.ac

11 years agocompositor: Init fade surface color properly
Ander Conselvan de Oliveira [Wed, 13 Feb 2013 14:06:37 +0000 (16:06 +0200)]
compositor: Init fade surface color properly

When fading in, if a repaint was triggered after a call to
weston_compositor_fade() but before the first call to fade_frame(),
the fade surface wouldn't be drawn because its alpha channel wasn't
initialized properly.

11 years agoscreenshot: Print warning if we're not launched from weston
Kristian Høgsberg [Wed, 13 Feb 2013 18:40:58 +0000 (13:40 -0500)]
screenshot: Print warning if we're not launched from weston

weston-screenshooter is a helper binary that weston launches to write the
screenshot to disk.  If somebody tries to launch it by hand, print a
warning and mention the screenshot keybinding.

11 years agotests: fix assignment typo, should be comparison
U. Artie Eoff [Tue, 29 Jan 2013 23:30:09 +0000 (15:30 -0800)]
tests: fix assignment typo, should be comparison

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agoAdd --version option
Scott Moreau [Wed, 29 Aug 2012 21:15:58 +0000 (15:15 -0600)]
Add --version option

11 years agoweston-launch: Clear environment and set it up from scratch
Kristian Høgsberg [Tue, 29 Jan 2013 19:14:06 +0000 (14:14 -0500)]
weston-launch: Clear environment and set it up from scratch

With recent systemd[1] XDG_VTNR will leak through to pam, which ends up
setting a vtnr pam argument with the wrong value.  The fix is to clear
XDG_VTNR first, but what we should have been doing all along is resetting
the environment.

Thanks to Ray Strode for helping debug this.

[1] http://cgit.freedesktop.org/systemd/systemd/commit/?id=a8573ccc35a4efe8900be5d48c6c803670540c2b

11 years agotoytoolkit: Remove left-over pixman dependency
Kristian Høgsberg [Mon, 28 Jan 2013 21:03:51 +0000 (16:03 -0500)]
toytoolkit: Remove left-over pixman dependency

toytoolkit doesn't use pixman.  Remove the pixman.h include and the
LDADD.

https://bugs.freedesktop.org/show_bug.cgi?id=57812

11 years agoAdd new shared/image-loader.h to separate include dependencies
Kristian Høgsberg [Mon, 28 Jan 2013 21:01:22 +0000 (16:01 -0500)]
Add new shared/image-loader.h to separate include dependencies

Before, cairo-util.h would combine pixman and cairo includes.  X11 and
Wayland compositors uses this to load an image as a pixman_image_t but are
forced to include cairo headers.  Clients use load_cairo_surface to
load images as cairo_surface_t's, but are forced to include pixman.h.

We move the load_image pixman prototype to its own header, so compositors
can get at the pixman prototype without including cairo.h and clients
can include the cairo based function without including pixman.h.

Conflicts:
src/compositor-wayland.c

11 years agoclients: Make libtoytoolkit a libtool library
Kristian Høgsberg [Mon, 28 Jan 2013 20:35:03 +0000 (15:35 -0500)]
clients: Make libtoytoolkit a libtool library

This way libtool will remember the libtoytoolkit LIBADD libraries.
We can drop the toolkit_libs hack and just link to libtoytoolkit.la and
libtool will add the dependencies.

Conflicts:
clients/Makefile.am

11 years agoterminal: Handle the window close event
Dima Ryazanov [Mon, 28 Jan 2013 09:11:06 +0000 (01:11 -0800)]
terminal: Handle the window close event

There may be multiple windows open, so destroy the terminal instead of exiting.

Signed-off-by: Dima Ryazanov <dima@gmail.com>
11 years agoconfigure.ac: Bump version to 1.0.4
Kristian Høgsberg [Fri, 25 Jan 2013 01:32:30 +0000 (20:32 -0500)]
configure.ac: Bump version to 1.0.4

11 years agoweston-launch: Use "weston-launch" for --help instead of "weston".
Scott Moreau [Tue, 22 Jan 2013 06:40:59 +0000 (23:40 -0700)]
weston-launch: Use "weston-launch" for --help instead of "weston".

The output of weston-launch --help was "Usage: weston [args...] ...".
This changes it to read "Usage: weston-launch [args...] ...".

11 years agotests: make signal other than ABRT a hard failure
Pekka Paalanen [Tue, 18 Dec 2012 15:30:16 +0000 (17:30 +0200)]
tests: make signal other than ABRT a hard failure

We handle FAIL_TEST tests by simply inverting the success flag. The
problem with this is, that if a FAIL_TEST fails by a SIGSEGV, it will be
interpreted as passed. However, no code should ever cause a SEGV, or any
other signal than ABRT. And even ABRT only in the case of an assert()
that is meant to fail. We would probably need more sophistication for the
FAIL_TEST cases.

For now, just interpret any other signal than ABRT as a hard failure,
regardless whether it is a TEST or FAIL_TEST. At least segfaults do not
cause false passes anymore.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agoWeston: weston.ini.man page
Martin Minarik [Fri, 18 Jan 2013 17:44:29 +0000 (18:44 +0100)]
Weston: weston.ini.man page

changes:
 - launcher path, passing environment variables and parameter
 - indent modeline example

11 years agocompositor-drm: Remove drm_disable_unused_sprites()
Ning Tang [Thu, 27 Dec 2012 07:36:35 +0000 (15:36 +0800)]
compositor-drm: Remove drm_disable_unused_sprites()

If a sprite is no longer used, it is disabled on the call to
drmModeSetPlane() when doing the output repaint, since its
pending_fb_id is 0.

This patch is a backport patch on weston 1.0.
Originally from Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
commit 3b2bd44d924744fa4635390e91afe569351e7d8d

Some platform has a heavy CPU load caused by redundant drmModeRmFB,
which is called in drm_disable_unused_sprites and would trigger drm_err.

Signed-off-by: Ning Tang <ning.tang@intel.com>
11 years agoconfigure.ac: Bump version to 1.0.3
Kristian Høgsberg [Fri, 14 Dec 2012 21:32:34 +0000 (16:32 -0500)]
configure.ac: Bump version to 1.0.3

11 years agotests: Pass --backend so the test suite runs with the right modules
Kristian Høgsberg [Fri, 14 Dec 2012 21:19:43 +0000 (16:19 -0500)]
tests: Pass --backend so the test suite runs with the right modules

Without this we try to load the installed backends, which is nasty for
regular runs, and just doesn't work for make distcheck, which sets
prefix to $PWD/_inst.  This makes sure we load the right backend
and make distcheck pass.  Other modules (xwayland, shells etc) just don't
get loaded for distcheck and for make check we still try to load the
installed modules.

11 years agotests: remove test logs on 'make clean'
Pekka Paalanen [Thu, 13 Dec 2012 08:01:25 +0000 (10:01 +0200)]
tests: remove test logs on 'make clean'

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agotext-test: Remove left-over WAYLAND_DEBUG setenv call
Kristian Høgsberg [Fri, 14 Dec 2012 19:40:50 +0000 (14:40 -0500)]
text-test: Remove left-over WAYLAND_DEBUG setenv call

11 years agoclients: Add screenshooter-client-protocol.h to screenshooter sources
Kristian Høgsberg [Fri, 14 Dec 2012 15:18:39 +0000 (10:18 -0500)]
clients: Add screenshooter-client-protocol.h to screenshooter sources

11 years agoupdate git ignores
Pekka Paalanen [Wed, 12 Dec 2012 12:26:39 +0000 (14:26 +0200)]
update git ignores

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agotests: check wl_display_roundtrip() for errors
Pekka Paalanen [Wed, 12 Dec 2012 12:26:41 +0000 (14:26 +0200)]
tests: check wl_display_roundtrip() for errors

Add a macro that wraps wl_display_roundtrip() and check for errors. It
is a macro, so that the assert would show the relevant file and line
number.

This will also catch protocol errors, that would go unnoticed otherwise.

All roundtrips in tests are replaced with the check.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agotests: set client log handler
Pekka Paalanen [Wed, 12 Dec 2012 12:26:40 +0000 (14:26 +0200)]
tests: set client log handler

Otherwise we cannot normally see protocol errors etc. in the test
output.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agotests: write logs to files
Pekka Paalanen [Wed, 12 Dec 2012 12:26:38 +0000 (14:26 +0200)]
tests: write logs to files

This cleans up the 'make check' output considerably. When all goes well,
you will only see the "PASS" line for each of $TESTS.

Weston logs into a separate file than stdout and stderr, so server logs
end up in one file per test, and other output to another file per test.

'make distclean' does not remove the tests/logs/ directory.

Also changes the weston-tests-env interpreter to bash, since I think &>
and ${1/.la/.so} might be bashisms.

11 years agotests: Convert remaining module tests to not use test-runner.c
Kristian Høgsberg [Wed, 12 Dec 2012 04:22:16 +0000 (23:22 -0500)]
tests: Convert remaining module tests to not use test-runner.c

The remaining module tests don't need to fork and talk to a test client,
so just convert them to regular modules and let them handle running their
tests themselves.  Then drop test-runner.[ch].

11 years agotests: Remove client-test test
Kristian Høgsberg [Wed, 12 Dec 2012 04:16:11 +0000 (23:16 -0500)]
tests: Remove client-test test

This test case is the last user of the test-client code and it only
tests launching the test-client.  In other words it's a minimal test
of the framework we're dropping, so just drop this test.

11 years agotests: Port text-test to new test framework
Kristian Høgsberg [Wed, 12 Dec 2012 04:03:56 +0000 (23:03 -0500)]
tests: Port text-test to new test framework

So much simpler this way and the test suite is now back too 100% pass.

11 years agotests: Drop yield() helper function
Kristian Høgsberg [Wed, 12 Dec 2012 03:17:35 +0000 (22:17 -0500)]
tests: Drop yield() helper function

Remaining use case was when we move the pointer.  This doesn't change
geometry so we can just use a wl_display_roundtrip() to make sure
we get the request to the server and receive the resulting events.

11 years agokeyboard-test: Use wl_display_roundtrip() instead of yield()
Kristian Høgsberg [Wed, 12 Dec 2012 03:00:50 +0000 (22:00 -0500)]
keyboard-test: Use wl_display_roundtrip() instead of yield()

As for button-test, a wl_display_roundtrip is sufficient here.  The
yield() between wl_test_activate_surface() and wl_test_send_key() is
also not needed, since the two requests will arrive at the server in
order, and will activate the surface first, then send a key event.

11 years agobutton-test: Use wl_display_roundtrip instead of yield()
Kristian Høgsberg [Wed, 12 Dec 2012 02:56:13 +0000 (21:56 -0500)]
button-test: Use wl_display_roundtrip instead of yield()

A round trip is sufficient here.  We need to make sure that the server
has received the wl_test request and that we've received the event
that the request triggers.  The wl_display_roundtrip() helper does
exactly that: it sends a wl_display.sync request, which will hit the
server after the wl_test requests and thus the wl_callback.done event
will come back after the server has seen all the previous requests and
after we've handled all preceeding event.

11 years agoweston-test-client-helper: Use a frame callback to flush surface geometry
Kristian Høgsberg [Wed, 12 Dec 2012 02:49:13 +0000 (21:49 -0500)]
weston-test-client-helper: Use a frame callback to flush surface geometry

When moving a test surface, use a frame callback to make sure the
surface has been moved and the geometry updated.  The compositor may
delay updating the transform matrices, but once we get the frame
callback we know the surface has been repainted and the geometry
updated.

11 years agotests: Convert button-test to new test extension
U. Artie Eoff [Fri, 7 Dec 2012 21:50:34 +0000 (13:50 -0800)]
tests: Convert button-test to new test extension

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=56821

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agotests: Convert event-test to new test extension
U. Artie Eoff [Fri, 7 Dec 2012 21:50:33 +0000 (13:50 -0800)]
tests: Convert event-test to new test extension

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=56819

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agotests: Convert keyboard-test to new test extension
U. Artie Eoff [Fri, 7 Dec 2012 21:50:32 +0000 (13:50 -0800)]
tests: Convert keyboard-test to new test extension

This adds a weston-test-runner for the weston test extension and
some weston test client helper methods.

Converted keyboard-test to use the new test interface, runner,
and helper methods.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=56822

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agotests: Allow weston-tests-env to process different test types
U. Artie Eoff [Fri, 7 Dec 2012 21:50:31 +0000 (13:50 -0800)]
tests: Allow weston-tests-env to process different test types

The weston-tests-env script needs to be able to handle weston
test extension style tests as well as module style tests.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agotests: Rename weston-test to weston-tests-env
U. Artie Eoff [Fri, 7 Dec 2012 21:50:30 +0000 (13:50 -0800)]
tests: Rename weston-test to weston-tests-env

Renamed weston-test test environment script to weston-tests-env
to avoid ambiguity with weston-test.c (the weston test extension).

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agotests: Define and implement a test protocol extension.
U. Artie Eoff [Fri, 7 Dec 2012 21:50:29 +0000 (13:50 -0800)]
tests: Define and implement a test protocol extension.

The weston test extension, called weston-test.so, can be loaded
from the "modules" configuration option on the command line
or in the .ini file.

Clients can bind to the "wl_test" interface to interact with
the weston test extension.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
11 years agoshell: Remove confusing case fall-through
Rob Bradford [Thu, 6 Dec 2012 12:07:48 +0000 (12:07 +0000)]
shell: Remove confusing case fall-through

This avoids calling weston_surface_set_position twice on the same surface. The
second call has no effect in many cases because sx and sy
are usually zero on this path.

This change now means that any sx/sy values passed into ::attach will be
ignored on the first attach for popup surfaces. This similar to the behaviour
for other surface types.

11 years agoweston-launch: Add some error reporting for weston-launch
Rob Bradford [Wed, 5 Dec 2012 18:47:11 +0000 (18:47 +0000)]
weston-launch: Add some error reporting for weston-launch

This also avoids us passing (size_t)(-1 * sizeof(gid_t)) into malloc

11 years agocompositor: Cleanup if we can't find the symbol in the module
Rob Bradford [Wed, 5 Dec 2012 18:47:10 +0000 (18:47 +0000)]
compositor: Cleanup if we can't find the symbol in the module

11 years agobacklight: Revamp error handling code to not leak the directory
Rob Bradford [Wed, 5 Dec 2012 18:47:09 +0000 (18:47 +0000)]
backlight: Revamp error handling code to not leak the directory

To neatly free the directory pointer allocated by opendir(), adjust the error
handling paths to go through to the err label.

11 years agotty: Clean up completely if switching vt fails
Rob Bradford [Wed, 5 Dec 2012 18:47:08 +0000 (18:47 +0000)]
tty: Clean up completely if switching vt fails

The code under the "err" label closes the file descriptor and frees the
allocated memory.

11 years agoxwayland: Close fd opened for lockfile on error path
Rob Bradford [Wed, 5 Dec 2012 18:47:07 +0000 (18:47 +0000)]
xwayland: Close fd opened for lockfile on error path

11 years agobacklight: Remove unnecessary and confusing NULL checks
Rob Bradford [Wed, 5 Dec 2012 18:47:06 +0000 (18:47 +0000)]
backlight: Remove unnecessary and confusing NULL checks

At this point path must point to an allocated string since otherwise the
asprintf that makes the allocation would have failed and we would have
returned earlier.

11 years agocompositor: Avoid sending event for invalid point
Rob Bradford [Wed, 5 Dec 2012 18:47:05 +0000 (18:47 +0000)]
compositor: Avoid sending event for invalid point

Avoid sending a touch down event using uninitialised surface x/y co-ordinates.
Instead present a log message about this unexpected case.

11 years agoscreenshooter: Report an error if we fail to open the file
Rob Bradford [Wed, 5 Dec 2012 18:47:04 +0000 (18:47 +0000)]
screenshooter: Report an error if we fail to open the file

11 years agocompositor: do not release if re-attaching buffer
Pekka Paalanen [Tue, 4 Dec 2012 13:58:10 +0000 (15:58 +0200)]
compositor: do not release if re-attaching buffer

If a client called wl_surface.attach with the same wl_buffer as
previously, the compositor would mistakenly send a release on that
buffer. This will cause problems only when clients start to properly use
the wl_buffer.release event.

Do not send wl_buffer.release if the same buffer is attached again.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agoshell: Do not remove input panel layer when locked
Jan Arne Petersen [Mon, 3 Dec 2012 14:36:02 +0000 (15:36 +0100)]
shell: Do not remove input panel layer when locked

Do not remove the input panel layer from the layer list when the
shell is locked in hide_input_panels().

https://bugs.freedesktop.org/show_bug.cgi?id=56543

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
11 years agoconfigure.ac: Bump version to 1.0.2
Kristian Høgsberg [Fri, 30 Nov 2012 21:18:36 +0000 (16:18 -0500)]
configure.ac: Bump version to 1.0.2

11 years agocompositor-drm: Allow scanning out of opaque ARGB surfaces
Ander Conselvan de Oliveira [Fri, 30 Nov 2012 15:34:22 +0000 (17:34 +0200)]
compositor-drm: Allow scanning out of opaque ARGB surfaces

11 years agoFix build warnings from image_loader
Pekka Paalanen [Fri, 30 Nov 2012 11:37:28 +0000 (13:37 +0200)]
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>
Conflicts:
src/compositor-wayland.c

11 years agoFix a crash when opening two terminal windows and closing the first one.
Dima Ryazanov [Thu, 29 Nov 2012 08:27:09 +0000 (00:27 -0800)]
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.

11 years agocompositor-x11: Link to libshared-cairo for icon loading helper
Kristian Høgsberg [Thu, 29 Nov 2012 22:00:33 +0000 (17:00 -0500)]
compositor-x11: Link to libshared-cairo for icon loading helper

The X11 backend needs the image loader helper to load the window
icon.

11 years agoconfigure.ac: Don't link weston to cairo or image libraries
Kristian Høgsberg [Thu, 29 Nov 2012 17:23:36 +0000 (12:23 -0500)]
configure.ac: Don't link weston to cairo or image libraries

We were pulling in cairo and the image loading libraries through libshared.
Split out libshared into a core libshared and a libshared-cairo that
pulls in the extra libraries.

11 years agoweston.ini: Introduce core section and remove type keys.
Scott Moreau [Tue, 27 Nov 2012 23:54:53 +0000 (16:54 -0700)]
weston.ini: Introduce core section and remove type keys.

Since a6813d288, there is no longer a "type" key in the [shell] config section.
Instead the code accepts a [core] section with a modules key, containing a
comma separated list of modules to load. This patch removes the type keys
and adds a core section in the example weston.ini config file.

11 years agocompositor: Move clearing of primary plane damage to the backends
Ander Conselvan de Oliveira [Thu, 22 Nov 2012 13:57:00 +0000 (15:57 +0200)]
compositor: Move clearing of primary plane damage to the backends

Backends may move surfaces to different planes, in which case damage is
generated in the primary plane. This damage is usually passed to the
renderer, but in some cases the backend may decide to not render
anything (that's the case when drm compositor scans out a client
buffer). In that case the damage on the primary plane would be
discarded, leading to artifacts later.

This patch makes the backend's responsibility to clear the damage on
the primary plane, so that unrendered damage is kept for as long as
necessary.

11 years agoman: fill missing pieces to weston page
Pekka Paalanen [Tue, 27 Nov 2012 14:54:09 +0000 (16:54 +0200)]
man: fill missing pieces to weston page

Config file, WAYLAND_SOCKET, XDG_CONFIG_HOME, segfault handler.

NOTE: This is a candidate for the stable branch
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agoman: add weston-drm page
Pekka Paalanen [Tue, 27 Nov 2012 14:54:08 +0000 (16:54 +0200)]
man: add weston-drm page

Add some documentation about the DRM backend into its own man page, and
refer to it in weston(1).

Environment variable, that are reserved for backends, and currently used
only by the DRM backend, are moved to weston-drm page.

NOTE: This is a candidate for the stable branch
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
11 years agoxwm: Fix xwm opaque region
Scott Moreau [Thu, 22 Nov 2012 22:35:13 +0000 (15:35 -0700)]
xwm: Fix xwm opaque region

Since surface.commit was introduced, opqaue regions are stored in a pending
variable that isn't used until surface.commit. Xwayland uses the surface opaque
region as a way to tell weston what region of the surface should be opaque.
However when this pending opaque region was introduced, xwm was not updated
and so we have the 'black = transparent' problem again. This patch fixes the
problem by having xwm use the pending opaque regions.

11 years agoconfigure.ac: Bump version to 1.0.1
Kristian Høgsberg [Tue, 20 Nov 2012 03:13:51 +0000 (22:13 -0500)]
configure.ac: Bump version to 1.0.1

11 years agosimple-egl: Reset opaque region if not fullscreen.
Scott Moreau [Mon, 19 Nov 2012 21:17:52 +0000 (14:17 -0700)]
simple-egl: Reset opaque region if not fullscreen.

If simple-egl is toggled fullscreen, the opqaue region is set for the surface
but never removed after exiting fullscreen. This patch resets the opaque region
to 0 if the surface is not fullscreen and -o was not passed. This fixes the
problem introduced sometime since d7f282b84e, when this was last fixed.

11 years agosimple-egl: Set the right size for the opaque region when fullscreen
Ander Conselvan de Oliveira [Fri, 7 Sep 2012 14:32:16 +0000 (17:32 +0300)]
simple-egl: Set the right size for the opaque region when fullscreen

window.window_size holds the size of the window in windowed mode. Use
window.geometry for setting the opaque region since that holds the
current size.

11 years agoshell/zoom: Increment/decrement disable_planes only when zoom.active changes
Ville Syrjälä [Fri, 16 Nov 2012 09:48:47 +0000 (11:48 +0200)]
shell/zoom: Increment/decrement disable_planes only when zoom.active changes

disable_planes should only be incremented when zoom.active actually
toggles. Otherwise the counter will be incremented too many times,
and planes will no longer get used.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
11 years agocompositor-drm: Don't use overlay when surface alpha != 1.0f
Ville Syrjälä [Fri, 16 Nov 2012 09:48:46 +0000 (11:48 +0200)]
compositor-drm: Don't use overlay when surface alpha != 1.0f

Assume that overlays can't handle alpha blending even with a constant
alpha factor.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
11 years agowcap: Transform damage rectangles according to output tranform
Kristian Høgsberg [Thu, 15 Nov 2012 01:28:30 +0000 (20:28 -0500)]
wcap: Transform damage rectangles according to output tranform

https://bugs.freedesktop.org/show_bug.cgi?id=56697

11 years agotests: Remove last GLfloat use
Kristian Høgsberg [Wed, 14 Nov 2012 19:42:51 +0000 (14:42 -0500)]
tests: Remove last GLfloat use

With the EGL/GLES2 types out of compositor.h this now fails to compile.

https://bugs.freedesktop.org/show_bug.cgi?id=57129

11 years agoFix a typo.
Dima Ryazanov [Sun, 11 Nov 2012 08:29:01 +0000 (00:29 -0800)]
Fix a typo.

11 years agoTerminal: Handle keypad symbols
Daniel Stone [Wed, 7 Nov 2012 06:51:35 +0000 (17:51 +1100)]
Terminal: Handle keypad symbols

XKB provides keypad symbols in a separate namespace.  We don't care
about the distinction, so map them to normal symbols before starting
processing.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agosmoke: Remove unused offset member
Daniel Stone [Wed, 7 Nov 2012 06:51:36 +0000 (17:51 +1100)]
smoke: Remove unused offset member

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agoshell: Do not insert input panel layer when locked
Jan Arne Petersen [Wed, 7 Nov 2012 14:32:54 +0000 (15:32 +0100)]
shell: Do not insert input panel layer when locked

Do not try to insert the input panel layer in the layer list when the
shell is locked in show_input_panels(). The layer will already be
insrted in resume_desktop() anyways.

https://bugs.freedesktop.org/show_bug.cgi?id=56543

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
11 years agocompositor: Use pixman_region32_intersect_rect() instead of temp region
Kristian Høgsberg [Thu, 8 Nov 2012 16:36:02 +0000 (11:36 -0500)]
compositor: Use pixman_region32_intersect_rect() instead of temp region

We avoid reusing 'opaque' and don't leak the region.

11 years agoReset pending surface delta x and y on commit
Daniel Stone [Wed, 7 Nov 2012 06:51:44 +0000 (17:51 +1100)]
Reset pending surface delta x and y on commit

The following sequence:
wl_surface::attach(s, b, 1, 2)
wl_surface::commit(s)
wl_surface::commit(s)
would actually result in the surface getting moved by (2,4) as the
pending attach delta wasn't reset on commit, only by another attach.

This only shows up on single-buffered surfaces.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agoClip surface damage to the surface area
Daniel Stone [Wed, 7 Nov 2012 06:51:43 +0000 (17:51 +1100)]
Clip surface damage to the surface area

Otherwise glTexSubImage2D will reject our co-ordinates as being out of
bounds.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agoSHM: Don't flush damage when there is none
Daniel Stone [Wed, 7 Nov 2012 06:51:42 +0000 (17:51 +1100)]
SHM: Don't flush damage when there is none

Every single frame, we were calling the flush_damage handler in the
renderer.  For GLES2 with subimage, this wasn't too bad as we'd never
call glTexSubImage2D, but without it, we'd upload the entire frame
through glTexImage2D every time.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agoClients: Don't set the cursor when we have no pointer
Daniel Stone [Wed, 7 Nov 2012 06:51:39 +0000 (17:51 +1100)]
Clients: Don't set the cursor when we have no pointer

Avoids a segfault whenever we get a key event, and try to set the
cursor, dereferencing a NULL input->pointer.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
11 years agowindow.c: Move misplaced break to where it belongs
Kristian Høgsberg [Tue, 6 Nov 2012 01:20:53 +0000 (20:20 -0500)]
window.c: Move misplaced break to where it belongs

The break statement wasn't copy and pasted along with the rest of the code
causing menu item before it ("Move to workspace below") to fall through to
the fullscreen case.

11 years agocompositor-drm: Always disable sprites for now
Kristian Høgsberg [Fri, 2 Nov 2012 14:14:40 +0000 (10:14 -0400)]
compositor-drm: Always disable sprites for now

Until the nuclear pageflip work lands in KMS, we can't use sprites
reliably.

11 years agocompositor-x11: verify that detectable repeat was really set
Ran Benita [Wed, 31 Oct 2012 18:14:58 +0000 (20:14 +0200)]
compositor-x11: verify that detectable repeat was really set

Since the XKB says that support for detectable repeat is in fact
optional:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Querying_and_Changing_Per_Client_Flags
we might as well be good citizens and check that it was really set. With
the X server this would never happen, though.

Signed-off-by: Ran Benita <ran234@gmail.com>
11 years agocompositor-x11: properly initialize XKB extension
Ran Benita [Wed, 31 Oct 2012 18:14:57 +0000 (20:14 +0200)]
compositor-x11: properly initialize XKB extension

In order to use XKB capabilities (as we do), the client must issue an
XkbUseExtension request:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Initializing_the_X_Keyboard_Extension

The reason this succeeds currently is that XOpenDisplay from Xlib does
this for us. But it is better not to rely on that, but do it explicitly
in XCB with the rest of the XKB init sequence.

Signed-off-by: Ran Benita <ran234@gmail.com>
11 years agocompositor-x11: free or discard XCB generic_error's
Ran Benita [Wed, 31 Oct 2012 18:14:56 +0000 (20:14 +0200)]
compositor-x11: free or discard XCB generic_error's

Where we don't look at the error details, pass NULL to the 'error'
argument and test using the reply return value instead.
Where we do need it, remember to free it.

Signed-off-by: Ran Benita <ran234@gmail.com>
11 years agocompositor-drm: Add key binding for hidding overlays
Ander Conselvan de Oliveira [Wed, 31 Oct 2012 15:55:46 +0000 (17:55 +0200)]
compositor-drm: Add key binding for hidding overlays

Pressing ctrl-alt-o will cause the overlays to be hidden, but surfaces
will still be assigned to different planes. This helps with debugging
of repaint culling below surfaces in other planes.

11 years agocompositor: Fix culling of repaints behind opaque surfaces
Ander Conselvan de Oliveira [Wed, 31 Oct 2012 15:55:45 +0000 (17:55 +0200)]
compositor: Fix culling of repaints behind opaque surfaces

Culling of the repaint of a surface behind an opaque surface on the
same plane was broken by commit 547149a9 [1]. The idea of that commit
is that the damage obscured by an overlay would remain on the primary
plane damage and be repainted when the overlay moved. However, in the
case the two surfaces are on the same plane, the opaque one is not
obscured, so it ends up being repainted.

This commit adds an opaque field to struct weston_plane, that is built
incrementally when accumulating damage. The opaque region of surfaces
on the same plane are removed from the plane's damage, restoring the
previous culling behavior. But since damage behind opaque region of
other planes is maintained, the bug solved in the mentioned commit is
not regressed.

https://bugs.freedesktop.org/show_bug.cgi?id=56537

11 years agocompositor-x11: use _checked() with xkb_select_events to test for error
Ran Benita [Tue, 30 Oct 2012 22:13:08 +0000 (00:13 +0200)]
compositor-x11: use _checked() with xkb_select_events to test for error

In order to use xcb_request_check(), given a request without a reply,
you need to use the _checked() variant of the request function.
See xcb-requests(3).

Signed-off-by: Ran Benita <ran234@gmail.com>
11 years agowindow: Fix use-after-free in menu button handler
Kristian Høgsberg [Tue, 30 Oct 2012 22:10:30 +0000 (18:10 -0400)]
window: Fix use-after-free in menu button handler

Commit d2fbb3870cfaea623a87ba28c9587676bbdc93f7 introduced a use-after-free
error in the case where we destroy the menu.

11 years agowindow: Only advertise fullscreen menu item if client supports it
Kristian Høgsberg [Tue, 30 Oct 2012 22:07:02 +0000 (18:07 -0400)]
window: Only advertise fullscreen menu item if client supports it

If the client doesn't set a fullscreen handler, we can't go fullscreen
and shouldn't advertise that in the window menu.  The menu implementation is
a little simplistic, so we just move the "Fullscreen" entry to the end of
the list and don't count it if we don't want it in the menu.

https://bugs.freedesktop.org/show_bug.cgi?id=47751
https://bugs.freedesktop.org/show_bug.cgi?id=48106

11 years agoimage: Set dragging pointer on button press, not first motion
Kristian Høgsberg [Tue, 30 Oct 2012 19:50:37 +0000 (15:50 -0400)]
image: Set dragging pointer on button press, not first motion

We want feedback that we're starting to drag when we press the button
not when we later start dragging the image.

11 years agoimage: Combine clamp_view() and center_view ()
Kristian Høgsberg [Tue, 30 Oct 2012 19:46:25 +0000 (15:46 -0400)]
image: Combine clamp_view() and center_view ()

We need to clamp or center on a per axis basis.  If the window is wider
but the image is taller, we need to center horizontally but
clamp vertically.  We can only do that if by combining the two
functions.

11 years agoimage: Add keyhandler to handle keyboard zoom
Kristian Høgsberg [Tue, 30 Oct 2012 19:42:20 +0000 (15:42 -0400)]
image: Add keyhandler to handle keyboard zoom

11 years agoimage: Set resize handler and center view on resize/fullscreen
Kristian Høgsberg [Tue, 30 Oct 2012 19:09:49 +0000 (15:09 -0400)]
image: Set resize handler and center view on resize/fullscreen

11 years agotoytoolkit: Don't destroy window cairo surface on shm attach.
Scott Moreau [Tue, 30 Oct 2012 18:12:12 +0000 (12:12 -0600)]
toytoolkit: Don't destroy window cairo surface on shm attach.

https://bugs.freedesktop.org/show_bug.cgi?id=52454

11 years agoshell: End popups if we trigger a shell grab
Kristian Høgsberg [Tue, 30 Oct 2012 18:07:27 +0000 (14:07 -0400)]
shell: End popups if we trigger a shell grab

Clicking outside popups closes them except in case of a shell grab
(move, resize or rotate), in which case we move the parent window away
from under the popup.  Instead, just end the popup in those cases.

https://bugs.freedesktop.org/show_bug.cgi?id=55674

11 years agocompositor: Fix partial repaints
Ander Conselvan de Oliveira [Tue, 30 Oct 2012 15:44:01 +0000 (17:44 +0200)]
compositor: Fix partial repaints

Partial repaints have been broken since the introduction of the atomic
surface updates. The problem was that surface_commit would set the
geometry dirty flag unconditionally, causing transform updates on every
frame which would in turn cause weston_surface_damage_below() to damage
the whole surface area.

This patch changes this so that flag is only set if the pending buffer
has a different size, the location of the surface changed or the opaque
region changed.

Note that changing the opaque region will cause a full repaint of the
affected surface, because of the transform update.

https://bugs.freedesktop.org/show_bug.cgi?id=56538

11 years agowindow: Make press-drag-release menu selection mode work
Kristian Høgsberg [Tue, 30 Oct 2012 17:45:22 +0000 (13:45 -0400)]
window: Make press-drag-release menu selection mode work

The intended behavior is that a quick click (press and then release
within 500ms) just pops up the menu and doesn't select anything.  Then
we can mouse around and and click to select an item.  Alternatively, a
click and hold (ie press and release after 500ms) lets you press right
button, mouse down on the menu item you want and release to select it.
This is how menus work in most toolkits.

The handling in weston is fine, it's there to handle the case where
the button release happens outside any client window, since the client
doesn't get those events.  If such a release happens late or we get a
second release outside the popup window we shut down the popup.

The problem is in toytoolkit, where we need to select the item if we
get a release within 500ms or if we get a second release.  A second
release is the case where the first release came after 500ms and
didn't pop down the menu, and the second release event is from a click
on a menu item.

https://bugs.freedesktop.org/show_bug.cgi?id=52456

11 years agocompositor-x11: Grab pointer on button press, ungrab on release
Kristian Høgsberg [Tue, 30 Oct 2012 15:04:52 +0000 (11:04 -0400)]
compositor-x11: Grab pointer on button press, ungrab on release

This lets us confine the X pointer to the Weston X window, which corresponds
better with the rendered Wayland cursor actually moves.

https://bugs.freedesktop.org/show_bug.cgi?id=53558

11 years agosimple-egl: Add a default cursor
Kristian Høgsberg [Mon, 29 Oct 2012 21:41:46 +0000 (17:41 -0400)]
simple-egl: Add a default cursor

If clients don't set a cursor, they get whatever the last cursor was
before the pointer entered their window.  That's a little confusing, so
set a pointer on enter to avoid that.  The down-side is that simple EGL
isn't very simple anymore.

https://bugs.freedesktop.org/show_bug.cgi?id=52452

11 years agoclients: Remove $(toolkit_libs) from weston_screensaver_CFLAGS
Kristian Høgsberg [Mon, 29 Oct 2012 21:15:54 +0000 (17:15 -0400)]
clients: Remove $(toolkit_libs) from weston_screensaver_CFLAGS

The typo that broke the build.

11 years agowindow: Ignore input_set_pointer_image() if we don't have a pointer
Kristian Høgsberg [Mon, 29 Oct 2012 20:42:26 +0000 (16:42 -0400)]
window: Ignore input_set_pointer_image() if we don't have a pointer

https://bugs.freedesktop.org/show_bug.cgi?id=55782

11 years agocompositor-drm: prefer PCI boot_vga GPU over other GPUs
David Herrmann [Mon, 29 Oct 2012 18:21:16 +0000 (19:21 +0100)]
compositor-drm: prefer PCI boot_vga GPU over other GPUs

If we can find a boot_vga PCI GPU, we should prefer it over any other GPU
that is connected to the system. The boot_vga flag tells us that this GPU
is the primary system GPU.

This fixes problems on two-GPU-systems were the wrong GPU is used. It also
fixes systems were DisplayLink GPUs are available with lower IDs than PCI
GPUs (although, this seems unlikely).

Note that udev_enumerate guarantees that the entry-list is sorted. So for
systems that have platform-GPUs, these should almost always be reported
prior to hotpluggable (PCI, USB, ...) GPUs, as the kernel probes them
first.

https://bugs.freedesktop.org/show_bug.cgi?id=56237

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
11 years agodnd: Use %zd in the format string for size_t types
Damien Lespiau [Fri, 26 Oct 2012 00:15:44 +0000 (01:15 +0100)]
dnd: Use %zd in the format string for size_t types

len i size_t, so is the result of the sizeof operator.

11 years agocompositor-x11: Inherit initial modifier state from XKB
Kristian Høgsberg [Mon, 29 Oct 2012 18:15:40 +0000 (14:15 -0400)]
compositor-x11: Inherit initial modifier state from XKB

https://bugs.freedesktop.org/show_bug.cgi?id=52419