Commit Graph

1460 Commits

Author SHA1 Message Date
Kristian Høgsberg
1a7a57f0d9 xwm: Detect WM_NORMAL_HINTS fullscreen attempts 2013-09-03 20:57:11 -07:00
Kristian Høgsberg
59f44c184d xwm: Detect legacy fullscreen modes 2013-09-03 20:56:20 -07:00
Kristian Høgsberg
1b6fed41dd xwm: Update size when override redirect windows change size 2013-09-03 20:56:12 -07:00
Kristian Høgsberg
69e25fc538 compositor: Implement release request for input interfaces
v2 (Rob Bradford): Update the version numbering for this change
2013-08-30 14:53:17 -07:00
Kristian Høgsberg
0eac34ab28 configure.ac: Auto-enable vaapi recorder, but allow overrides
If libva is available and recent, we'll enable the vaapi recorder feature,
but it can also be forced on or off by --enable/disable-vaapi-recorder.
2013-08-30 14:29:03 -07:00
Ander Conselvan de Oliveira
6aae4d39d5 compositor-drm: Add hardware accelerated capture of screen using libva
This patch adds a feature to the DRM backend that uses libva for
encoding the screen contents in H.264. Screen recording can be
activated by pressing mod-shift-space q. A file named capture.h264
will be created in the current directory, which can be muxed into
an MP4 file with gstreamer using

gst-launch filesrc location=capture.h264 ! h264parse ! mp4mux ! \
           filesink location=file.mp4

This is limitted to the DRM compositor in order to avoid a copy when
submitting the front buffer to libva. The code in vaapi-recorder.c
takes a dma_buf fd referencing it, does a colorspace conversion using
the video post processing pipeline and then uses that as input to the
encoder.

I'm sending this now so I get comments, but this is not ready for
prime time yet. I have a somewhat consistent GPU hang when using
i915 with SandyBridge. Sometimes a page flip never completes. If you
want to try this anyway and your system get stuck, you might need to
run the following:

  # echo 1 > /sys/kernel/debug/dri/0/i915_wedged

After that, alt-sysrq [rv] should work.

Once that's fixed it would also be good to make the parameters used by
the encoder more flexible. For now the QP parameter is hardcoded to 0
and we have only I and P frames (no B frames), which causes the
resulting files to be very large.
2013-08-30 13:44:40 -07:00
Kristian Høgsberg
037bdc4c5d evdev: Don't parse config file again, use compositor->config 2013-08-29 13:49:35 -07:00
Kristian Høgsberg
e1b655df92 shell: Make sure we have seat->pointer and seat->touch before dereferencing
Either of these may not be available when we handle wl_shell_surface.move,
and we need to not crash when that's the case.

https://bugs.freedesktop.org/show_bug.cgi?id=68649
2013-08-28 23:17:09 -07:00
Kristian Høgsberg
73db924ad3 gl-renderer: Use GL_UNSIGNED_SHORT for index array type
GL_UNSIGNED_INT is only supported when GL_OES_element_index_uint is
available (mesa implements that extension).  We don't need 32-bit
indices, so just use GL_UNSIGNED_SHORT.
2013-08-28 23:05:31 -07:00
Kristian Høgsberg
6c7583de2a evdev: Don't transform device->abs.x/y in place
We don't always get both an X and an Y event in a SYN report, so we end
up transforming the coordinate we don't get twice.  For example, if we
only receive an ABS_X event, we transform the already transformed
device->abs.y again in transform_absolute() when applying the calibration.
2013-08-28 22:12:24 -07:00
Jason Ekstrand
a985da48a7 Add a --shell option to override the default desktop-shell
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2013-08-26 22:07:03 -07:00
Pier Luigi Fiorini
403ea92c48 compositor.h: Don't include config.h
Public headers should not include config.h.
2013-08-26 15:22:42 -07:00
Kristian Høgsberg
c7d2c4c147 Add more missing config.h #includes
Now that we use AC_SYS_LARGEFILE, we need to pull in config.h at least
whereever we use mmap().  Fixes at least the test-suite and simple-shm
on 32 bit systems.
2013-08-26 14:59:14 -07:00
Kristian Høgsberg
4e55d067ea evdev: Initliaze device->link so we can wl_list_remove() without crashing
We were testing for wl_list_empty() on a { NULL, NULL } list (which
returns false) and then wl_list_remove()ing the device (which crashes).
2013-08-26 14:35:34 -07:00
Kristian Høgsberg
146f5ba466 xwm: Use window->x/y for override redirect surfaces
window->x/y is the coordinate of the top-level surface (whether that's
the frame window or an override-redirect window) and the wayland surface
should be placed there, without the t->margin offset.
2013-08-22 16:30:21 -07:00
Kristian Høgsberg
e89a8b6ba1 xwm: Fix transform listener
The coordinate transformation was broken (worked for first output where
output->x/y was 0,0, broke on all other outputs).  We can just use
surface->geometry.x/y directly.  We can't use the full transformation,
the best we can do is to move the X window to the geometry.x/y location.

Get rid of the static old_sx/sy hack as well.
2013-08-22 16:23:35 -07:00
Kristian Høgsberg
122877d5e7 xwm: Fix configure notify handler
We only get configure notify for toplevel (frame or override-redirect window)
and those are the cases where we want to update window->x/y.  The way the
code worked, we'd exit immeidately in those cases and window->x/y would
not be updated.
2013-08-22 16:18:17 -07:00
Kristian Høgsberg
69981d9621 xwm: Set _NET_WM_CM_S0 instead of relying on the xwayland module to do it
Not sure why I made xwayland claim this selection, seem a little
awkward in retrospect.
2013-08-21 22:14:58 -07:00
Kristian Høgsberg
ac6104ea11 compositor-drm: Zero out create_arg when creating dumb framebuffers
The create_arg struct has a flags member that we didn't properly set to 0.
2013-08-21 22:14:14 -07:00
Kristian Høgsberg
a34e2f2adc data-device: Only bail out if we failed to allocate offer
It's valid to have a NULL data source (self-dnd) in which case we send
a NULL offer on enter.
2013-08-20 15:58:25 -07:00
Kristian Høgsberg
ab19f937c2 compositor: Only check buffer for NULL tried to allocate something
In particular, if we get a NULL buffer attach, it's ok for buffer to be NULL.
2013-08-20 11:30:54 -07:00
Daiki Ueno
3e9df07269 autotools: Don't use wayland-scanner.m4 2013-08-20 11:15:19 -07:00
Hardening
58bcc362a7 set RDP output enabled by default (stable 1.2)
This patch fixes a bug found by Marek Romanowic: the RDP peer output must
be enabled by default, or we have to unfocus/focus the RDP client window to
have disable/enable output messages sent (and finally receive updates).
2013-08-19 15:44:36 -07:00
Rusty Lynch
1084da506e Add touch support for wl_shell_surface_move 2013-08-16 10:56:00 -07:00
Daniel Stone
8e7a8bdeea Add more missing config.h includes
config.h includes were missing in a few files, including input.c, the
lack of which caused the X11 backend to segfault instantly due to not
having an xkbcommon context.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2013-08-16 10:56:00 -07:00
Maksim Melnikau
92de144331 add [xwayland] path weston.ini option
It sets the path to the xserver to run.

Signed-off-by: Maksim Melnikau <maxposedon@gmail.com>
2013-08-16 10:55:59 -07:00
Kristian Høgsberg
08b58c7c12 compositor: Handle OOM in weston_buffer_from_resource()
Handle NULL-return in call-sites as well.
2013-08-15 12:26:42 -07:00
Giulio Camuffo
13b85bdb65 compositor: ref-count weston_surface instances
This allows a surface to live on after its resource has been
destroyed.  The ref-count can be increased in a resource destroy signal
listener, to keep the surface around for a destroy animation, for example.
2013-08-13 15:19:50 -07:00
Kristian Høgsberg
b1c02a80ef evdev: Ignore joystick devices
We don't handle them in any way now and having your steering wheel move
the cursor isn't useful.  Applications can still open evdev devices and
access them directly like they already do.
2013-08-13 14:55:39 -07:00
Giulio Camuffo
9f42e50868 xwm: do not crash when activating a NULL surface 2013-08-13 10:04:27 -07:00
Armin K
b502f906db evdev-touchpad: Set some options using weston.ini
This patch adds 3 new options to weston.ini to allow
the user to change default constant_accel_factor,
min_accel_factor and max_accel_factor. If no options
are set, it falls back using defaults as it did before.

v2: create weston_config_section_get_double and use it
instead of manualy converting string to double.

v3: add default values in weston_config_get_double
instead of using conditionals.

v4: don't pass diagonal as pointer.
2013-08-12 22:42:17 -07:00
Rob Bradford
7ac9f73c7d weston-launch: Only pass non-NULL value into setenv()
getenv() can return NULL is the key is not set, passing NULL into
setenv() is an error
2013-08-12 22:24:44 -07:00
Rolf Morel
14c9892069 evdev: write EV_SYN input_event along with led events to device
Other clients of an evdev device need to have the events they receive
be separated, in moment in time, from other events by an EV_SYN/
SYN_REPORT. This is the responsibility of the client who writes events
into the stream.
2013-08-12 22:23:13 -07:00
Giulio Camuffo
4e5f1153ca Install shared/zalloc.h
Plugins need to have it available, as it is included in compositor.h.

https://bugs.freedesktop.org/show_bug.cgi?id=67948
2013-08-12 21:29:53 -07:00
Rob Bradford
880ebc7ed9 input: For serial generation get the display from the compositor
This removes the use of wl_client_get_display() where the client is
derived from the focussed resource. This starts the removal of the
assumption of a single resource on a client that would be notified about
events on the focussed surface.
2013-08-12 16:54:10 -07:00
Rusty Lynch
f1407ff81d input: Store touch position and time when we start an implicit touch grab 2013-08-08 22:01:42 -07:00
Rusty Lynch
92e83929f0 evdev: Use touch ID 0 when generating touch up event
device->mt.slot is uninitialized when we're not receiving the
evdev slot events.  Always use ID 0 as we do when we generate the
touch down and motion events.
2013-08-08 22:01:42 -07:00
Adrian Negreanu
c838423b5e compositor: Setup weston-launch sock in fbdev
weston_launcher_open() was failing with:
    recvmsg: Socket operation on non-socket

Signed-off-by: Adrian Negreanu <adrian.m.negreanu@intel.com>
2013-08-08 22:01:42 -07:00
Peter Hutterer
34be0608c7 weston-launch: always drop privileges before execve
The current code works if pw->pw_shell is bash because:
 "If the shell is started with the effective user (group) id not equal to
 the real user (group) id, and the -p option is not supplied, these actions
 are taken and the effective user id is set to the real user id."

Thus, for bash, weston's EUID == UID.

For zsh, the -p option "is enabled automatically on startup if the effective
user (group) ID is  not equal to the real user (group) ID."
Thus, weston's EUID = 0, and if pw_shell is zsh, /run/user/$UID/wayland-0 is
created with euid root and not writeable by the user, causing all clients to
fail.

Fix this by always dropping privileges to the user.

Regression introduced in 636156d.
2013-08-08 14:11:09 -07:00
Peter Hutterer
4477fee1c3 evdev: log when a device is used as touchpad 2013-08-08 14:04:58 -07:00
Peter Hutterer
6bb15cd4a8 evdev: call evdev_device_destroy on failure
Avoid keeping keeping what needs to be freed in sync in multiple places,
make evdev_device_destroy do the right thing instead.
2013-08-08 14:04:47 -07:00
Peter Hutterer
76d35286cf evdev: plug a potential memleak
For touchpads, device->dispatch is set up when exiting
evdev_handle_device() and a potential source for a memleak.
This can't actually happen at the moment, as evdev_handle_device() won't
fail for touchpads after setting up the dispatch but prevent this from
happening in the future.
2013-08-08 14:04:25 -07:00
Peter Hutterer
df66c5bf79 evdev: get the current slot value from the absinfo struct or mtdev
If touches are already present on the device, absinfo has the currently
active touch slot. There's a race condition where the slot may change before
we enable the fd and we thus miss out on the ABS_MT_SLOT event. It's still
slightly more correct than assuming whatever comes next is slot 0.
2013-08-08 14:03:23 -07:00
Peter Hutterer
0d061e3802 evdev: only use mtdev for Protocol A devices
For Protocol B devices, mtdev merely routes the events and is not needed.
For Protocol A devices, mtdev is needed, so fail for those devices now if we
mtdev fails.
2013-08-08 14:00:30 -07:00
Peter Hutterer
89af60e6f5 evdev: add comment why we're ignoring key value 2 2013-08-08 13:58:36 -07:00
Peter Hutterer
11f5bfbc09 evdev: prevent unterminated device name
The kernel copies up to sizeof(devname) bytes but doesn't null-terminate the
string if the device name exceeds the size of the supplied buffer.
2013-08-08 13:58:27 -07:00
Peter Hutterer
96f0824892 tty: fix typo in error message 2013-08-08 13:46:14 -07:00
Peter Hutterer
45d659dd82 evdev: check for ABS_MT_POSITION_X/Y to determine mt devices
mtdev as currently used in weston is a noop. mtdev's purpose is to convert
Protocol A devices (without ABS_MT_SLOT) to Protocol B devices (slots).
For Protocol B devices mtdev merely routes the events, so checking for
slots and then using mtdev based on that adds no functionality.

Check for ABS_MT_POSITION_X/Y instead and use that to categorise a device
as MT device. mtdev will provide us with a slotted protocol for all devices.

https://bugs.freedesktop.org/show_bug.cgi?id=54428
2013-08-08 13:46:14 -07:00
Peter Hutterer
f3d62276d2 malloc + memset -> zalloc
And for clients using the xmalloc helper, use xzalloc.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-08-08 13:46:13 -07:00
Peter Hutterer
b1bc4a68b0 Add zalloc(size_t) allocator function
Same as calloc(1, len).
2013-08-08 13:46:13 -07:00
Armin K
214e9ce6ff cms-colord: Don't redefine _GNU_SOURCE
warning: "_GNU_SOURCE" redefined [enabled by default]

See commit c228e23b
2013-08-07 16:30:17 -07:00
Kristian Høgsberg
1c4f163c6d gl-renderer: Only check for subimage when we have extension at compile time
If weston is compiled against a gl2ext.h that doesn't have the subimage
extension, but then run against a gles2 library that does provide it,
we end up disabling the glTexImage2D falback without having the subimage
code paths compiled in.
2013-08-07 12:11:27 -07:00
Kristian Høgsberg
59758a8a9e Add workaround for broken GL_EXT_unpack_subimage tokens
Earlier versions of gl2ext.h defined the GL_EXT_unpack_subimage tokens
without the _EXT suffix.  That's been fixed and we're using the _EXT
tokens now, but just in case we're using an older, broken header, define
the _EXT tokens manually.
2013-08-07 12:05:08 -07:00
Kristian Høgsberg
4722939d18 gl-renderer.c: Cast wl_resource to void * to avoid warning
The extension has been updated to take a wl_resource * now, but to avoid
warnings when compiling against older versions, just cast to void *.
2013-08-07 11:59:54 -07:00
Kristian Høgsberg
ce7a5d8794 gl-renderer: Test for GL_EXT_unpack_subimage not GL_UNPACK_ROW_LENGTH
It is defined by the mesa #include, which is just a copy of the official
Khronos header.  It's just defined in a different section than the
extension tokens.  In the mean time, the extension tokens were renamed
to add a _EXT suffix (eg GL_UNPACK_ROW_LENGTH -> GL_UNPACK_ROW_LENGTH_EXT)
and we silently failed to used the subimage extension.
2013-08-07 09:55:07 -07:00
Kristian Høgsberg
3c17933de8 Use #define WL_HIDE_DEPRECATED to avoid deprecated warnings for wl_buffer 2013-08-06 19:27:04 -07:00
Bryce Harrington
c814c58adc Drop extraneous duplicate header includes
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
2013-08-06 17:02:22 -07:00
Tomeu Vizoso
0368189bac rpi: Add support for SHM buffers in RGB565 format 2013-08-06 16:51:14 -07:00
Tomeu Vizoso
1c1fc29cf1 pixman-renderer: Add support for SHM buffers in RGB565 format 2013-08-06 16:50:59 -07:00
Tomeu Vizoso
12072b6a7c gl-renderer: Add support for SHM buffers in RGB565 format 2013-08-06 16:50:51 -07:00
Kristian Høgsberg
0ff7908767 compositor: Check wl_resource_create() return value
This fixes a number of call-sites to properly check for NULL and return
the no memory event when allocation fail.
2013-08-06 16:46:25 -07:00
Kristian Høgsberg
b10b44b58c data-device.c: Handle failure to allocate offer in weston_drag_set_focus
If we fail to allocate and send the offer, don't send the drag enter and
don't set the drag focus so we don't send motion events or leave.
2013-08-06 11:15:22 -07:00
Kristian Høgsberg
3c30f0f950 data-device.c: Handle OOM in weston_data_source_send_offer()
If we fail to allocate the resource, clean up and return NULL.
2013-08-06 10:24:04 -07:00
Rob Bradford
5c4245d70d compositor-x11: Don't leak the looked up name for skipped outputs 2013-07-30 11:06:06 -07:00
Rob Bradford
307e09ee34 compositor-drm: Use a format width parameter for the modeline sscanf 2013-07-30 11:04:46 -07:00
Rob Bradford
581b3fd779 compositor-fbdev: Close fd used for re-enabling if that fails
The device will be opened again in fbdev_output_create().
2013-07-30 11:04:29 -07:00
Rob Bradford
f8ef42feae compositor-fbdev: Avoid dereferencing a pointer in freed memory
fbdev_output_destroy will free the memory passed into in and since we
want to pass the device name into fbdev_output_create we need to save
this to an intermediate value
2013-07-30 11:04:11 -07:00
Rob Bradford
5c89710166 tty: Correctly check if the opening of the file descriptor failed 2013-07-30 11:03:35 -07:00
Rob Bradford
45c15b83c0 drm: close the drm file descriptor when the compositor is destroyed 2013-07-30 11:02:56 -07:00
Eduardo Lima
d0357bbb97 weston-launch: Fix signal mask typo 2013-07-30 10:45:26 -07:00
Kristian Høgsberg
73c60ab6e9 weston-launch: Unblock our signalfd signals before execing child
Giovanni Campagna ran into this with mutter.
2013-07-30 09:45:04 -07:00
Rob Bradford
c30c4bd6c8 clipboard: remove the weston_seat destruction listener on destroy
Prior to freeing the memory in which the link node for the signal is
emedded we should remove the link node from the list to prevent the list
from being corrupted.

https://bugs.freedesktop.org/show_bug.cgi?id=67231
2013-07-29 16:37:04 -07:00
Rob Bradford
ead3ef8c77 text-backend: remove the weston_seat destruction listener on destroy
Prior to freeing the memory in which the link node for the signal is
emedded we should remove the link node from the list to prevent the list
from being corrupted.

https://bugs.freedesktop.org/show_bug.cgi?id=67231
2013-07-29 16:36:58 -07:00
Michael Fu
a2bb7919de Reset touch focus in unmap
Otherwise, there will be race condition of visiting invalid surface data.
2013-07-29 16:31:47 -07:00
Louis-Francis Ratté-Boulianne
dce3dacc37 xwayland: Remove transform listener when destroying the wm
Fix a segfault occuring after the last X window was closed.
2013-07-29 15:47:19 -07:00
Kristian Høgsberg
0af26c4fe7 evdev: Suport old-style single-touch touch screens
These screens send only BTN_TOUCH and ABS_X/Y.
2013-07-26 10:43:26 -07:00
Kristian Høgsberg
58014bbba8 evdev: Use temporary x and y coordinates when applying calibration
Don't overwrite device->abs.x halfway through the matrix multiplication.
2013-07-26 10:41:43 -07:00
Kristian Høgsberg
cee407e0c0 evdev: Don't add output offset in evdev_process_absolute_motion()
We do that in weston_output_transform_coordinate() now.
2013-07-26 10:40:32 -07:00
Kristian Høgsberg
87d38418a1 compositor-x11: Use assert(0) instead of return NULL for non-reachable code 2013-07-25 16:42:30 -07:00
Kristian Høgsberg
46118f8197 clipboard: Fix fd leak
We never closed the reading end of the pipe after copying data to the
clipboard.
2013-07-25 16:21:41 -07:00
Kristian Høgsberg
5e76a49d9c Rename wl_data_offer to weston_data_offer
Another left-over from when we moved the input structs.
2013-07-25 16:09:37 -07:00
Kristian Høgsberg
0e17de1c0b udev: Use WL_OUTPUT udev attribute for pairing touchscreens to outputs 2013-07-25 15:58:14 -07:00
Kristian Høgsberg
f2807701d9 weston-launch: Switch to regular poll
epoll doesn't provide any convenince here and is just awkward to use.
2013-07-25 15:58:00 -07:00
Kristian Høgsberg
636156d5f6 weston-launch: Don't start new session unless -u is given 2013-07-25 15:57:01 -07:00
Kristian Høgsberg
ab4999492c weston-launch: Drop sleep_fork option 2013-07-25 15:56:58 -07:00
Kristian Høgsberg
ca70f2fc68 weston-launch: Move child setup and exec to its own function 2013-07-25 15:56:49 -07:00
Kristian Høgsberg
7ff3bdb5f7 Rename wl_data_source to weston_data_source
Missed this rename when we moved the input structs over from wayland.
2013-07-25 15:54:20 -07:00
Kristian Høgsberg
862814b2e6 clipboard: Handle OOM in clipboard_source_create() 2013-07-25 15:54:20 -07:00
Kristian Høgsberg
3c95e70496 compositor: Move weston-launch socket lookup to drm backend
This is the only backend that uses the launcher, so let's set it
up there.
2013-07-25 09:51:46 -07:00
Kristian Høgsberg
9e5d7d17a7 shell: Remove redundant weston_pointer field from shell_grab
This is already in weston_grab.
2013-07-25 09:50:34 -07:00
Kristian Høgsberg
97e806f138 evdev: Use weston_output_transform_coordinate for evdev touch screens 2013-07-25 09:50:28 -07:00
Kristian Høgsberg
98c774f1c0 compositor: Move device coordinate transform helper to compositor.c
This function transform input coordinates from output space to
compositor space and is useful for X input as well as touch screen input.
2013-07-25 09:50:15 -07:00
Kristian Høgsberg
18684d442e weston-launch: Ignore sighup
When our session terminates all processes get a SIGHUP.  We need to ignore
that in weston-launch and stay around to help weston shut down properly.

https://bugs.freedesktop.org/show_bug.cgi?id=63004
2013-07-22 16:34:41 -07:00
Rob Bradford
bdeb5d224d shell: Respect output transformation for input panel surface
Rather than using the dimensions in the mode we can use the recently
added output width and height members which are updated to reflect any
output rotation.

https://bugs.freedesktop.org/show_bug.cgi?id=66798
2013-07-12 23:56:18 -04:00
Rob Bradford
e1ad1d2498 tablet-shell: Avoid infinite loop when unlocking
weston_compositor_wake will fire the signal that the unlock handler is
setup as the listener for. Instead lets change the state to HOME which
unlocks.
2013-07-09 17:11:31 -04:00
Rob Bradford
6cf9b01e88 tablet-shell: Fix copy and paste error in unlock handler
The signal handler was using the wrong member to find the containing
structure of the unlock listener.

https://bugs.freedesktop.org/show_bug.cgi?id=57637
2013-07-09 17:10:34 -04:00
Kristian Høgsberg
919cddb0ab Convert to wl_global_create/destroy() 2013-07-09 02:02:11 -04:00
Kristian Høgsberg
aaadc774a7 input: Remove wl_seat global when a seat is destroyed
The input code was relying on compositor destruction to clean up the
global, but that doesn't work when the global comes and goes dynamically.

https://bugs.freedesktop.org/show_bug.cgi?id=65913
2013-07-08 16:20:31 -04:00
Kristian Høgsberg
fa514b496e xwayland: Don't allow resizing to 0x0 or less
X windows have to be at least 1x1 pixels.

https://bugs.freedesktop.org/show_bug.cgi?id=63510
2013-07-08 15:00:25 -04:00
Kristian Høgsberg
07d48a306e weston-launch: Fix the typo for real this time
Thanks to MonkeyofDoom for point this out.  I'm still adjusting to the
fact that there's no 'd' in privilege, but I'll get over it.
2013-07-08 14:34:53 -04:00