Commit graph

4266 commits

Author SHA1 Message Date
Bryce Harrington
aab5a0cfab compositor: Display option help text only for enabled backends
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-01-15 13:52:20 -08:00
Bryce Harrington
db09a082e6 compositor: Fix typos in help text
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-01-15 13:51:53 -08:00
Bryce Harrington
9005fc87f4 compositor: Fix tabbing of help output
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-01-15 13:51:44 -08:00
Bryce Harrington
fd26d57365 compositor: (Whitespace-only) Indent with tabs
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-01-15 13:51:36 -08:00
Frank Binns
0771521acf smoke: fix valgrind invalid read errors
There are a number of invalid read errors reported by valgrind of the
form:
	==13428== Invalid read of size 4
        ==13428==    at 0x405656: advect (smoke.c:116)
        ==13428==    by 0x405E80: redraw_handler (smoke.c:228)
        ==13428==    by 0x40DE74: widget_redraw (window.c:3995)
        ==13428==    by 0x40E02D: surface_redraw (window.c:4053)
        ==13428==    by 0x40E0C9: idle_redraw (window.c:4082)
        ==13428==    by 0x410FC9: display_run (window.c:5561)
        ==13428==    by 0x406518: main (smoke.c:373)
        ==13428==  Address 0xb2c9b14 is 4 bytes after a block of size
                   160,000 alloc'd
        ==13428==    at 0x4C29DB4: calloc
        ==13428==    by 0x40646B: main (smoke.c:360)

This results in invalid rendering when running a debug version of the
application.

Fix the issue by limiting the maximum values of px and py to 1.5 less
than width and height. This prevents reading past the end of the source
buffer.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=82287
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-01-15 13:37:01 -08:00
Jasper St. Pierre
9a49525193 smoke: Don't commit an xdg_surface with a NULL buffer
Committing to an xdg_surface with a NULL buffer is currently illegal in
the mutter implementation, so this simply causes the client to error and
exit.

It seems the reason the client did this was so it could add its own
frame callback, but toytoolkit actually provides accurate everything we
need. Just use its functions instead to get the time and schedule a
redraw.

Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-01-15 13:34:50 -08:00
Giulio Camuffo
84a95913c9 input: fix access to invalid resource
the keyboard focus surface may not have a valid resource (server side
surface or a surface surviving its client), so check if it is valid
before using it.

Acked-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-01-15 12:32:49 -08:00
Daniel Stone
4a4573ed03 releasing: update web host name
Signed-off-by: Daniel Stone <daniels@collabora.com>
2015-01-15 11:06:28 -08:00
Pekka Paalanen
7e10d85104 shell: don't crash on create_common_surface() failure
Noticed while reading code, that create_common_surface() may return
NULL, and callers of its direct callers check for NULL, but the
intermediate function in between would crash.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-01-15 10:58:37 -08:00
Derek Foreman
728fdde3c8 shell: fix weston_output_mode_switch() usage
Calling weston_output_mode_switch() with WESTON_MODE_SWITCH_RESTORE_NATIVE
will result in the mode being set "back" to the passed in mode - so the
passed mode should be the native mode.

Additionally, weston_output_mode_switch() should be called when
output->original_mode is non-NULL (which indicates we had a temporary
mode set).  The comparison to current_mode results in a lot of
log chatter.

Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-01-15 10:56:35 -08:00
Javier Jardón
01030c04b3 Makefile.am: Link weston_multi_resource against rt library
This fixes this build failure:

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.3/../../../../x86_64-unknown-linux-gnu/bin/ld:
clients/weston_multi_resource-multi-resource.o: undefined reference to
symbol 'clock_gettime@@GLIBC_2.2.5'
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.3/../../../../x86_64-unknown-linux-gnu/bin/ld:
note: 'clock_gettime@@GLIBC_2.2.5' is defined in DSO /lib64/librt.so.1
so try adding it to the linker command line
/lib64/librt.so.1: could not read symbols: Invalid operation
2014-11-21 14:49:47 +02:00
Pekka Paalanen
2858cc2a50 configure.ac: bump version to 1.6.0
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-19 13:40:14 +03:00
Olivier Blin
30e1f3c311 editor: do not crash when text input manager is not available
[Pekka Paalanen: whitespace fix]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-17 13:55:24 +03:00
Olivier Blin
814f0ee5a6 keyboard: do not crash when input panel is not available
[Pekka Paalanen: whitespace fix]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-17 13:52:09 +03:00
Jason Ekstrand
22e16b656f compositor-x11: Rename the output make to "weston-X11"
Previously all outputs in the X11 backend had the make "xwayland" which is
confusing.  Now they have something that makes a little more sense.
2014-09-15 12:11:32 -07:00
Ondřej Majerech
b2c1864777 window: Don't needlessly sync parent and geometry
When a toytoolkit client redraws, the toolkit syncs the parent and
geometry. If a client redraws often (such as the terminal drawing a huge
amount of output), this can spam the compositor with requests and may
result in the client's eventual being killed.

We don't need to send requests for changing the geometry or parent if
these haven't changed. So remember the last geometry and parent, and
update them only if needed.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=83297
Signed-off-by: Ondřej Majerech <majerech.o@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-15 11:22:05 +03:00
Pekka Paalanen
f1d2cc0d14 configure.ac: bump version 1.5.93 for rc2
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-12 12:45:08 +03:00
Pekka Paalanen
eb4fd35278 libinput: default to INFO log level
Set the default logging level from libinput to INFO. This matches better
the behaviour of the old input backend, and prints the found input
devices into Weston's log.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Jonas Ådahl <jadahl@gmail.com>
2014-09-12 12:15:44 +03:00
Jonas Ådahl
c996f1d8bd libinput-device: Don't get initial key states
Initial key state is no pressed keys, and the libinput_device_get_keys
function was deprecated in libinput 0.6.0.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2014-09-12 11:41:41 +03:00
Peter Hutterer
3fbba493d5 libinput: normalize WL_CALIBRATION before passing it to libinput
WL_CALIBRATION, introduced in weston-1.1, requires the translation component
of the calibration matrix to be in screen coordinates. libinput does not have
access to this and it's not a very generic way to do this anyway. So with
the libinput backend, WL_CALIBRATION support is currently broken (#82742).
This cannot be fixed in libinput without changing its API for this specific
use-case.

This patch lets weston take care of WL_CALIBRATION. It takes the original
format and normalizes it before passing it to libinput. This way libinput
still does the coordinate transformation, weston just needs to provide the
initial configuration.

Note that this needs an updated libinput, otherwise libinput will try to
transform coordinates as well.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=82742
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-12 09:51:04 +03:00
Ondřej Majerech
03db71caea compositor: Don't free an uninitialised pointer.
When backend_init returns NULL, we goto out_signals, which wants to
free(modules), but in this particular code path, modules hasn't been
initialised leading to a "Double-free or corruption" error message.
Initialising modules to NULL makes the free a no-op in this scenario.

Signed-off-by: Ondřej Majerech <majerech.o@gmail.com>
Reviewed-by: Ryo Munakata <ryomnktml@gmail.com>
2014-09-12 09:38:39 +03:00
Bill Spitzak
5e3b693a11 image: don't print redundant error
This error is printed by load_image() now

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-11 13:11:29 +03:00
Bill Spitzak
28371f7d55 load_image: always print a message on failure if filename is not empty
It was rather inconsistent before. This may help users figure out why
backgrounds and icons don't show up. A better api where the error can
be queried might be nice, but this seems sufficient for current Weston use.

[Pekka Paalanen: removed one stray space.]

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-11 13:01:47 +03:00
Bill Spitzak
3011493e9b parse_options: fail on more malformed options
Fail on trailing text after numbers, such as --width=100mm

Fail on any text after booleans, such as --flag=false

Also fixed reading of memory after the null terminator of a long
option with no = sign in it.

[Pekka Paalanen: some whitespace style fixes.]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-11 12:36:55 +03:00
Derek Foreman
4b1a0a1d07 cosmetic: update comments that refer to weston_surface_update_transform()
weston_surface_update_transform() no longer exists, except in comments.

Fix that.

[Pekka Paalanen: don't lose the full comment in compositor-drm.c.]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-11 11:52:56 +03:00
Pekka Paalanen
2623786277 Partially revert "xdg-shell: Add show_window_menu request"
This reverts the parts of commit 81ff075bf4
that touch window.c.

This brings the toytoolkit window context menus back, until someone
implements the xdg-shell equivalent in the compositor.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=82972
Acked-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-11 11:34:31 +03:00
Marek Chalupa
8b771af986 xdg-shell: fix maximizing in multi-head setup
Set the right position of maximized window. Up until now we ignored
output's "position" and were using only the working area
of output which is in output-relative coordinates. This led to
showing the maximized window always on the first output.

This, along with the previous patch, fixes
https://bugs.freedesktop.org/show_bug.cgi?id=82967

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-10 16:33:13 +03:00
Marek Chalupa
bfbb64bb75 xdg-shell: update shsurf->output when maximizing
shsurf->output is the output that user expects the shell surface
is on. When maximizing, we don't have any explicit setting of the output
like in the case of fullscreening, so set the output to the one that
the surface is currently on. In the case that the surface is not mapped yet,
(if it ever happens) use the same heuristics as for fullscreening.

This fixes the size sent with configure event, when maximizing a window.
The size is now picked up by the correct output, but the maximized
window position is still wrong. [Pekka Paalanen]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=82967
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-10 16:26:00 +03:00
Jonas Ådahl
16fe4dcea9 input: Schedule pointer sprite repaint when cursor is set
If a cursor was set with wl_pointer.set_cursor but not in combination
with an action that has the side effect of damaging the region where the
cursor is positioned, it would not be drawn. This patch explicitly
schedules a repaint of the pointer sprite when it is set.

clickdot is updated to illustrate the bug; when moving the pointer over
clickdot, the pointer is hidden. When not having moved the pointer for
500 ms it is made visible using wl_pointer.set_pointer.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-10 14:20:13 +03:00
Giulio Camuffo
00535ce6b4 compositor: fix memory corruption when removing an output
The destructor set on the wl_output resources needs the weston_output
to be allocated, because it removes the resource from its list.
So unset the destructor on all the resources when destroying an
output.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-09 14:00:20 +03:00
Ryo Munakata
03faed2074 main: don't leak option strings
[Pekka Paalanen: fix a long line]

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-09 12:21:25 +03:00
Ryo Munakata
d8deff617a compositor: extract choose_default_backend and create_listening_socket
Extract these two new functions from main() to improve readability.
Refactoring only, no functioncal changes.

[Pekka Paalanen: commit message]

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-09 12:06:45 +03:00
Giulio Camuffo
041a981a4e compositor: remove unused signal
The move_signal in weston_output isn't used, and not even initialized,
so anything trying to listen to it will crash on wl_signal_add().
Instead of it, the 'output_moved_signal' in weston_compositor is
used, so remove it.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-09 11:55:34 +03:00
Jason Ekstrand
f83a0d44b8 Fix a copy-paste error in weston_surface_commit_state 2014-09-06 09:01:28 -07:00
Pekka Paalanen
386754cf79 configure.ac: bump version to 1.5.92 for rc1
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-05 15:05:56 +03:00
Pekka Paalanen
974c094060 fix asprintf warnings
Fix recently introduced compiler warnings:

desktop-shell/shell.c: In function 'shell_configuration':
desktop-shell/shell.c:588:10: warning: ignoring return value of
'asprintf', declared with attribute warn_unused_result [-Wunused-result]

src/screenshooter.c: In function ‘screenshooter_binding’:
src/screenshooter.c:291:10: warning: ignoring return value of
‘asprintf’, declared with attribute warn_unused_result [-Wunused-result]

src/text-backend.c: In function ‘text_backend_configuration’:
src/text-backend.c:944:10: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-05 14:45:09 +03:00
Marek Chalupa
052917aa2a xdg-shell: handle clients launched in fullscreen
When client is lauched in fullscreen, it is placed on the
first output, because it is not mapped and
shell_surface_set_output() therefore sets default output.

Since we have no better way how to position newly created windows,
(http://lists.freedesktop.org/archives/wayland-devel/2014-May/thread.html#14568)
set the output to the one that has currently focus. Priority has
the touch focus, then pointer and then keyboard focus.

This fixes bug
https://bugs.freedesktop.org/show_bug.cgi?id=69780

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-05 12:10:12 +03:00
Derek Foreman
086b987be4 matrix-test: fix units in report
The matrix-test speed tests are calculated in ns but some printed the
units as us

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-05 11:32:36 +03:00
Derek Foreman
362656bfa3 touch-input: Don't dereference NULL pointer during full screen fade
If a full screen program is fading out and a touch start happens, it
will result in a NULL pointer dereference when weston_touch_set_focus
tries to derefernce view->surface->resource.

Instead, this patch sets the focus to NULL, which should be the
same as if the program was destroyed during the touch anyway.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=78706
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-05 10:32:09 +03:00
Xiong Zhang
bfb4ade1a0 clients: Maximize window when double click on title bar
Signed-off-by: Xiong Zhang <panda0626@gmail.com>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-04 17:11:22 +03:00
Boyan Ding
b9f863ca57 xwm: Do not activate override redirect windows
We shouldn't do WM-y things on an O-R window, including setting input
focus to it.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=81273
Signed-off-by: Boyan Ding <stu_dby@126.com>
Tested-by: Ryo Munakata <ryomnktml@gmail.com>
Acked-by: Christopher Michael <cp.michael@samsung.com>
2014-09-04 15:16:04 +03:00
Jonny Lamb
76cf1feb3b desktop-shell: implement touch popup grabs
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-04 13:34:57 +03:00
Ryo Munakata
389d205b58 pixman-renderer: copy_to_hw_buffer: don't leak output_region
This was reported by Valgrind.

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-04 11:59:49 +03:00
Derek Foreman
66951b7f87 pixman-renderer: fail to zoom more gracefully
When zoom is activated in the pixman rendered the log is filled with warnings
and all rendering stops.  With this patch the warning is generated once and
rendering continues without zooming.

Closes bug 80258

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=80258
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-03 16:18:47 +03:00
Boyan Ding
3c6d20c5eb xwm: Check whether the seat is NULL when needed in weston_wm_handle_button
XCB and wayland input event handling exists together in xwm, which can
cause problems. weston_wm_handle_button is called via XCB events, while
it calls weston_wm_pick_seat_for_window, which uses info from compositor
(pure wayland). It is also true in setting and removing flags of frames.
Races can happen in between, when resize of moving flag of the frame is
still set while the button has been released, the picked seat will be
NULL in weston_wm_handle_button, causing crash. We can safely ignore
moving or resizing if this happens. The same applies to c06a180d.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=82827
Signed-off-by: Boyan Ding <stu_dby@126.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-03 16:07:34 +03:00
Giulio Camuffo
de7e2b3ce3 compositor: add an option to set the default numlock value
Add a new "numlock-on" option in the [keyboard] section of weston.ini
which, if set to true, is used to enable the numlock of the keyboards
attached at startup.

Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-03 15:31:31 +03:00
Giulio Camuffo
6ef444d094 compositor: add a way to change the keyboard locks
This adds a function weston_keyboard_set_locks() which can be used to
change the state of the num lock and the caps locks, changing the leds too.
Only the evdev and libinput backends supports this, since it doesn't make
sense for embedded sessions.

Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-09-03 15:31:04 +03:00
Pekka Paalanen
2e62e4ad71 shell: quit weston, if weston-desktop-shell dies early
If weston-desktop-shell dies soon after launch, or maybe cannot be
executed at all, let weston exit rather than letting the user stare at a
black screen.

But, do not exit weston, if weston-desktop-shell dies later, as the user
may already have apps open, and those apps would likely still function
correctly. This gives the user the opportunity to save his work and
close the apps properly.

This should make one class of "I see only black screen" failures obvious.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2014-09-01 10:18:59 +03:00
Arnaud Vrac
8e3fe08c42 pixman-renderer: free shadow buffer on renderer destruction
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-08-28 14:07:04 +03:00
Arnaud Vrac
fb754a0a05 desktop-shell: properly set background widget as opaque
Toytoolkit resets the opaque region which was set manually using the
wayland protocol directly, so use the widget API instead.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-08-28 13:41:00 +03:00