Commit Graph

1302 Commits

Author SHA1 Message Date
emersion c19d475753
xdg-output: don't send no-op updates
To begin with, no-op updates are unnecessary, so this patch is an
improvement on its own.

Then, this fixes hotplugging issues with xwayland. xwayland waits
for both wl_output and xdg_output to send a "done" event. However,
it doesn't handle well desynchronized "done" updates: if xdg-output
sends "done" twice, the second one will wait for the next wl_output
"done" event. This is an issue when the first is a no-op and the
second is a real update: the second isn't applied. I've considered
patching xwayland instead, but it seems pretty complicated.
2018-07-08 14:12:18 +01:00
emersion 5fe50b9a28
output: make wl_output resources inert 2018-07-07 23:02:08 +01:00
emersion 33db4263a0
surface: replace wlr_surface_set_role_committed with wlr_surface_role 2018-07-07 22:45:16 +01:00
emersion 515d682312
surface: fix damage when moving subsurfaces with scale > 1 2018-07-04 19:16:16 +01:00
emersion e665a74122
surface: don't clip input and opaque regions
These can be set to e.g. regions larger than the surface. If the
surface resizes itself, it doesn't need to set again these regions.
2018-07-04 19:12:18 +01:00
emersion 226306ed45
surface: rename wlr_surface_state.buffer to buffer_resource 2018-07-04 19:12:18 +01:00
emersion 68c133da2f
surface: fix crash on NULL commit 2018-07-04 19:12:18 +01:00
emersion 6f0eb11024
surface: fix previous state eating current state resources 2018-07-04 19:12:18 +01:00
emersion f440708274
output: fix cursor attach coords handling 2018-07-04 19:12:18 +01:00
emersion 012e38fbe5
surface: add wlr_surface.previous 2018-07-04 19:12:18 +01:00
emersion 78555abba3
surface: move position and scale out of wlr_surface_state 2018-07-04 19:12:17 +01:00
emersion 233bfe2f4f
surface: do not monkey-patch state damage 2018-07-04 19:12:17 +01:00
emersion adf0423f7c
surface: better buffer position handling 2018-07-04 19:12:17 +01:00
emersion 3c0d672ebd
surface: make pending and current embedded structs 2018-07-04 19:12:17 +01:00
emersion 64836ddfe7
surface: remove wlr_surface_state.subsurface_position 2018-07-04 19:12:17 +01:00
emersion 3ee86b6105
surface: rename invalid state 2018-07-04 19:12:16 +01:00
Dominique Martinet 48e8da851d wlr_seat destroy: fix use-after-free when destroying clients
wl_resource_for_each_safe isn't safe to use here because it accesses
the list's head memory one last time at the end of the loop. Work
around this by breaking out early.

==19880==ERROR: AddressSanitizer: heap-use-after-free on address 0x60d0000e6368 at pc 0x7fab68619de2 bp 0x7ffd5c91cee0 sp 0x7ffd5c91ced0
READ of size 8 at 0x60d0000e6368 thread T0
    #0 0x7fab68619de1 in wlr_seat_destroy ../types/seat/wlr_seat.c:179
    #1 0x7fab68619fb9 in handle_display_destroy ../types/seat/wlr_seat.c:196
    #2 0x7fab688e4f8f in wl_priv_signal_emit src/wayland-server.c:2024
    #3 0x7fab688e56ca in wl_display_destroy src/wayland-server.c:1092
    #4 0x40c11e in server_fini ../sway/server.c:138
    #5 0x40b1a8 in main ../sway/main.c:438
    #6 0x7fab67b5e18a in __libc_start_main ../csu/libc-start.c:308
    #7 0x409359 in _start (/opt/wayland/bin/sway+0x409359)

0x60d0000e6368 is located 24 bytes inside of 144-byte region [0x60d0000e6350,0x60d0000e63e0)
freed by thread T0 here:
    #0 0x7fab6a7d6880 in __interceptor_free (/lib64/libasan.so.5+0xee880)
    #1 0x7fab68619805 in seat_client_handle_resource_destroy ../types/seat/wlr_seat.c:97
    #2 0x7fab688e5025 in destroy_resource src/wayland-server.c:688

previously allocated by thread T0 here:
    #0 0x7fab6a7d6e50 in calloc (/lib64/libasan.so.5+0xeee50)
    #1 0x7fab686198df in seat_handle_bind ../types/seat/wlr_seat.c:127
    #2 0x7fab6530503d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d)
2018-07-04 14:50:14 +09:00
Ilia Bozhinov 00ccf5c3ae properly check if the point is inside the surface in wlr_surface_point_accepts_input 2018-07-03 10:29:02 +03:00
Drew DeVault 27cab67b96
Merge pull request #1105 from RyanDwyer/xdg-surface-for-each-popup
Introduce wlr_xdg_surface_for_each_popup
2018-07-01 06:39:06 -07:00
Ryan Dwyer 86f401e827 Introduce wlr_xdg_surface_for_each_popup
It is common to want to iterate an xdg-surface's popups separately from
the toplevel and subsurfaces. For example, popups are typically rendered
on top of most other surfaces.

wlr_xdg_surface_for_each_surface continues to iterate both surfaces and
popups to maintain backwards compatibility.
2018-07-01 23:24:39 +10:00
Dominique Martinet 9ddc2f39d0 wlr_seat destroy: fix use-after-free after primary selection source cancel
the primary_selection_source_destroy list points to memory freed by
that cancel callback, so remove from list before freeing
2018-07-01 21:04:43 +09:00
emersion dbb01cbcd0
screencopy: listen to buffer destroy 2018-06-30 22:18:04 +01:00
emersion 9aaa9ba477
screencopy: make frame resource inert after copy 2018-06-30 22:18:04 +01:00
emersion c421700f3d
screncopy: update protocol 2018-06-30 22:18:04 +01:00
emersion bf7560b7cd
screencopy: add capture_output_region support 2018-06-30 22:18:04 +01:00
emersion 2b9cbaddf3
screencopy: add support for frame flags 2018-06-30 22:18:03 +01:00
emersion bd8be19b79
screencopy: add presentation timestamp 2018-06-30 22:18:03 +01:00
emersion 73755ad348
screencopy-v1: add basic implementation 2018-06-30 22:17:59 +01:00
Dominique Martinet c263f7ca29 s/wlr_subsurface_from_surface/wlr_subsurface_from_wlr_surface/
This was the only x_from_wlr_surface function that lacked the wlr_ prefix,
let's have an API as uniform as possible.
2018-06-30 21:21:13 +09:00
Dominique Martinet 1fef1f88b2 export dmabuf manager_handle_capture_output: fix leak on error
Found through static analysis
2018-06-30 11:47:25 +09:00
Dominique Martinet b3313b7f39 wlr_output: fix scope for 'now'
'when' points to now that was defined in the if, so compiler could reuse
that memory area by the time 'when' is called

Found through static analysis.
2018-06-30 11:38:21 +09:00
Dominique Martinet efef54ccf5 wlr_keyboard: fix mmap leak + logic on close for keymap_fd
mmap leak found through static analysis
2018-06-30 11:38:21 +09:00
emersion ec7d4a0971
Merge pull request #1092 from martinetd/idle_inhibit
Idle inhibit cleanup
2018-06-28 14:33:07 +01:00
Dominique Martinet 93a75769f0 wlr_idle_inhibit_v1: cleanup destroy handlers
- Rename handlers to <type>_handle_resource_destroy and
<type>_handle_destroy to be coherent
 - Make sure we never destroy wl_resources when we shouldn't

Updates #999
2018-06-28 22:04:28 +09:00
Dominique Martinet a3e2a77734 xdg_popup: fix call to to handle_grab for inert popup 2018-06-28 20:28:15 +09:00
Dominique Martinet 970687a01c xdg_shell popup: fix potential segv in handle_destroy
surface could be NULL there if the popup had been made
inert before
2018-06-28 13:54:35 +09:00
Dominique Martinet d0b902b962 wlr_idle: add helper to enable/disable all timers
There was no way to tell wlr_idle to stop processing input events
and rearm timers all the time, such an API is required to have
some form of idle inhibitor.
2018-06-27 22:47:05 +09:00
Dominique Martinet ffd37b664f xdg_shell: destroy children popups with parent surface
popups have a link in parent's surface->popups list and needs
to be freed before:

==6902==ERROR: AddressSanitizer: heap-use-after-free on address 0x6120001a0300 at pc 0x7fc1447acb50 bp 0x7fffd396e680 sp 0x7fffd396e670
WRITE of size 8 at 0x6120001a0300 thread T0
    #0 0x7fc1447acb4f in wl_list_remove ../util/signal.c:55
    #1 0x7fc14477d206 in destroy_xdg_popup_v6 ../types/xdg_shell_v6/wlr_xdg_popup_v6.c:162
    #2 0x7fc1447816e0 in destroy_xdg_surface_v6 ../types/xdg_shell_v6/wlr_xdg_surface_v6.c:108
    #3 0x7fc144a1c025 in destroy_resource src/wayland-server.c:688
    #4 0x7fc144a1c091 in wl_resource_destroy src/wayland-server.c:705
    #5 0x7fc14477fd6f in xdg_client_v6_handle_resource_destroy ../types/xdg_shell_v6/wlr_xdg_shell_v6.c:72
    #6 0x7fc144a1c025 in destroy_resource src/wayland-server.c:688
    #7 0x7fc144a20851  (/lib64/libwayland-server.so.0+0xc851)
    #8 0x7fc144a20d92  (/lib64/libwayland-server.so.0+0xcd92)
    #9 0x7fc144a1c140 in wl_client_destroy src/wayland-server.c:847
    #10 0x7fc144a1c21c in destroy_client_with_error src/wayland-server.c:307
    #11 0x7fc144a1c21c in wl_client_connection_data src/wayland-server.c:330
    #12 0x7fc144a1df01 in wl_event_loop_dispatch src/event-loop.c:641
    #13 0x7fc144a1c601 in wl_display_run src/wayland-server.c:1260
    #14 0x40a2f4 in main ../sway/main.c:433
    #15 0x7fc143ef718a in __libc_start_main ../csu/libc-start.c:308
    #16 0x40b749 in _start (/opt/wayland/bin/sway+0x40b749)

0x6120001a0300 is located 64 bytes inside of 264-byte region [0x6120001a02c0,0x6120001a03c8)
freed by thread T0 here:
    #0 0x7fc14690d880 in __interceptor_free (/lib64/libasan.so.5+0xee880)
    #1 0x7fc1447acce8 in wlr_signal_emit_safe ../util/signal.c:29
    #2 0x7fc1447a3cac in surface_handle_resource_destroy ../types/wlr_surface.c:576
    #3 0x7fc144a1c025 in destroy_resource src/wayland-server.c:688

previously allocated by thread T0 here:
    #0 0x7fc14690de50 in calloc (/lib64/libasan.so.5+0xeee50)
    #1 0x7fc144781d38 in create_xdg_surface_v6 ../types/xdg_shell_v6/wlr_xdg_surface_v6.c:415
    #2 0x7fc14147503d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d)

Alternative would be to have popups listen to the parent's surface
destroy event and remove themselves from the list at this point OR on
their own destroy, whichever happens first, but that seems more
complicated for little benefit.
2018-06-25 17:54:25 +09:00
Dominique Martinet 954969698a wlr_primary_selection: fix use-after-free when cancelling source
seat->primary_election_source_destroy points to the source that just got
freed by the cancel.

==7843==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b0004269b0 at pc 0x7fb95bf4ccd0 bp 0x7ffd75013940 s
p 0x7ffd75013930
WRITE of size 8 at 0x60b0004269b0 thread T0
    #0 0x7fb95bf4cccf in wl_list_remove ../util/signal.c:55
    #1 0x7fb95bf3f4c6 in wlr_seat_set_primary_selection ../types/wlr_primary_selection.c:238
    #2 0x7fb95becb1a7 in xwm_handle_selection_event ../xwayland/selection/selection.c:124
    #3 0x7fb95bed2e5d in x11_event_handler ../xwayland/xwm.c:1139
    #4 0x7fb95c1bdf01 in wl_event_loop_dispatch src/event-loop.c:641
    #5 0x7fb95c1bc601 in wl_display_run src/wayland-server.c:1260
    #6 0x40a2f4 in main ../sway/main.c:433
    #7 0x7fb95b69718a in __libc_start_main (/lib64/libc.so.6+0x2318a)
    #8 0x40b749 in _start (/opt/wayland/bin/sway+0x40b749)

0x60b0004269b0 is located 64 bytes inside of 112-byte region [0x60b000426970,0x60b0004269e0)
freed by thread T0 here:
    #0 0x7fb95e0ad880 in __interceptor_free (/lib64/libasan.so.5+0xee880)
    #1 0x7fb95bf3f49e in wlr_seat_set_primary_selection ../types/wlr_primary_selection.c:236
    #2 0x7fb95becb1a7 in xwm_handle_selection_event ../xwayland/selection/selection.c:124
    #3 0x7fb95bed2e5d in x11_event_handler ../xwayland/xwm.c:1139
    #4 0x7fb95c1bdf01 in wl_event_loop_dispatch src/event-loop.c:641

previously allocated by thread T0 here:
    #0 0x7fb95e0ade50 in calloc (/lib64/libasan.so.5+0xeee50)
    #1 0x7fb95bec7ad6 in xwm_selection_get_targets ../xwayland/selection/incoming.c:355
    #2 0x7fb95bec7ad6 in xwm_handle_selection_notify ../xwayland/selection/incoming.c:402
    #3 0x7fb95becb1a7 in xwm_handle_selection_event ../xwayland/selection/selection.c:124
    #4 0x7fb95bed2e5d in x11_event_handler ../xwayland/xwm.c:1139
    #5 0x7fb95c1bdf01 in wl_event_loop_dispatch src/event-loop.c:641

SUMMARY: AddressSanitizer: heap-use-after-free ../util/signal.c:55 in wl_list_remove
Shadow bytes around the buggy address:
  0x0c168007cce0: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
  0x0c168007ccf0: fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa
  0x0c168007cd00: fa fa fd fd fd fd fd fd fd fd fd fd fd fd fd fa
  0x0c168007cd10: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c168007cd20: fd fd fd fd fd fa fa fa fa fa fa fa fa fa fd fd
=>0x0c168007cd30: fd fd fd fd fd fd[fd]fd fd fd fd fd fa fa fa fa
  0x0c168007cd40: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c168007cd50: fd fa fa fa fa fa fa fa fa fa fd fd fd fd fd fd
  0x0c168007cd60: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa
  0x0c168007cd70: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
  0x0c168007cd80: fa fa fa fa fa fa fd fd fd fd fd fd fd fd fd fd
2018-06-25 17:28:44 +09:00
Tony Crisci a2ff144429 input-inhibit: use wlr_signal_emit_safe 2018-06-24 19:33:15 -04:00
Tony Crisci 006edc9dcb xdg-shell: end pointer and keyboard grab at the same time 2018-06-24 18:50:04 -04:00
Drew DeVault e459fe0ec7
Merge pull request #992 from emersion/screencontent
Implement wlr_export_dmabuf_unstable_v1 protocol
2018-06-22 05:37:07 -07:00
Drew DeVault 47c7674a68
Merge pull request #1075 from emersion/fix-xdg-toplevel-compare
xdg-shell{,-v6}: fix compare_xdg_surface_toplevel_state
2018-06-20 18:54:01 -07:00
emersion a59774f364
xdg-shell{,-v6}: fix compare_xdg_surface_toplevel_state 2018-06-20 21:25:01 +01:00
emersion a6c0e25d36
surface: remove wlr_frame_callback
This removes the need to allocate a structure for frame callbacks.
wl_resource_get_link is used instead.
2018-06-20 20:00:23 +01:00
emersion 57548b557a
Merge branch 'master' into screencontent 2018-06-17 14:49:18 +01:00
emersion bd0c1b7949
export-dmabuf: update protocol 2018-06-17 14:19:45 +01:00
emersion 843621714f
surface: fix double wl_buffer.release events
Prior to this commit, we re-uploaded the buffer even if a new one
wasn't attached. After uploading, we send wl_buffer.release. So,
this sequence of requests resulted in a double release:

    surface.attach(buffer, 0, 0)
    surface.commit()
    <- buffer.release()
    surface.commit()
    <- buffer.release()
2018-06-17 12:49:34 +01:00
Drew DeVault fb118ac996
Merge pull request #1062 from emersion/wlr-buffer-comeback
Add back wlr_buffer
2018-06-16 13:43:14 -07:00
emersion 225aa815b0
buffer: fix wlr_texture leak on failed alloc 2018-06-16 19:01:13 +01:00
Ilia Bozhinov 23707f6504 layer-shell: check whether the surface is mapped in layer_surface_destroy()
If the layer surface has been closed by the compositor, using
layer_surface_close(), then the unmap event is emitted. However, when
the layer surface is later destroyed by the client, the compositor used
to get a second unmap, which is fixed with this commit.
2018-06-16 17:29:53 +03:00
emersion da114d5013
buffer: don't destroy DMA-BUF textures with wl_buffer
After some discussions on #wayland, it seems that as soon as you
hold a reference to a DMA-BUF (via EGLImage for instance), the
underlying memory won't get free'd. The client is allowed to
re-use the DMA-BUF and upload something else to it though.
2018-06-14 10:15:14 +01:00
Drew DeVault d27eeaa14c Revert "Merge pull request #1050 from emersion/wlr-buffer"
This reverts commit 5e4af4862e, reversing
changes made to 9a1f0e2d5f.
2018-06-13 19:57:42 -04:00
emersion 0378d143d9
surface: remove wlr_surface.texture
The texture is managed by the surface's wlr_buffer now. In
particular, the buffer can destroy the texture early if it becomes
invalid.
2018-06-13 19:38:10 +01:00
emersion 38d415dd20
buffer: make wlr_buffer_ref return the buffer 2018-06-11 08:13:35 +01:00
emersion e4933ab445
Introduce wlr_buffer 2018-06-08 20:06:13 +01:00
emersion 6f895081e1
Merge pull request #1043 from acrisci/drag-icon-unmap
drag-icon map and unmap fixes
2018-06-07 11:18:58 +01:00
emersion 211463ba87
Merge pull request #1045 from ammen99/master
xdg-shells: add a set_parent signal to toplevel surfaces
2018-06-06 21:38:32 +01:00
Tony Crisci 1a07bf95ae
Merge pull request #1044 from emersion/fix-box-intersection
box: fix wlr_box_intersection
2018-06-06 11:59:40 -04:00
Ilia Bozhinov a989104a6b xdg-shells: add a set_parent signal to toplevel surfaces 2018-06-06 17:08:06 +03:00
emersion ed89a24328
box: fix wlr_box_intersection 2018-06-06 08:47:04 +01:00
Tony Crisci 7c888a39c6 update drag position at the right times 2018-06-05 23:45:03 -04:00
Tony Crisci 319ebdf476 add back map event 2018-06-05 22:50:29 -04:00
Tony Crisci 1c75d4e54a rename drag-icon map to unmap 2018-06-05 18:17:42 -04:00
Dominique Martinet c6821f3dd3 wlr_surface: insert subsurfaces in revert order
sibling surfaces were drawn in incorrect order (e.g. latest below).
This attempts to fix that by reverting the order of the list.
2018-06-05 21:02:42 +09:00
Tony Crisci 7206997e95 fix wlr_box_intersection and closest_point 2018-06-04 18:56:57 -04:00
Tony Crisci a57d1baf57
Merge pull request #1033 from RyanDwyer/fix-xdg-popups
Fix mistakes in xdg_popup and xdg_popup_v6
2018-06-04 18:46:58 -04:00
emersion 344374fa14
Merge pull request #1039 from acrisci/positioner-invert-x-fix
add missing anchor case in positioner invert-x for xdg-shell
2018-06-04 22:27:26 +01:00
Tony Crisci bcb660cb1d add missing anchor case in positioner invert-x 2018-06-04 17:16:17 -04:00
emersion 78966417f4
Merge pull request #1031 from martinetd/multibind-seat
seat: allow clients to bind to seat multiple times
2018-06-04 16:44:22 +01:00
Dominique Martinet cf9b8c0a8c wlr_surface_get_root_surface: walk up parent
This would dead-loop and never walk up if called on a subsurface
2018-06-05 00:17:58 +09:00
Dominique Martinet 51b9883ea0 seat: allow clients to bind to seat multiple times
This lets clients bind to a seat multiple times by re-using the existing
wlr_seat_client whenever a duplicate request happens.
Previously, an independant wlr_seat_client would be created and only
events from one would be processed.

Fixes #1023.
2018-06-04 22:31:36 +09:00
Bob Ham eb8b8acca6 wlr_linux_dmabuf: Fix printf conversion specifiers on armhf
The printf conversion specifiers in a call to wl_resource_post_error
do not specify the type correctly on armhf:

../types/wlr_linux_dmabuf.c: In function 'params_add':
../types/wlr_linux_dmabuf.c:104:21: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t {aka long long unsigned int}' [-Werror=format=]
    "sent modifier %lu for plane %u, expected modifier %lu like other planes",
                   ~~^
                   %llu

To fix this, we use standard printf conversion specifier macros from
inttypes.h.
2018-06-04 13:20:09 +00:00
Ryan Dwyer 516c864d46 Fix mistakes in xdg_popup and xdg_popup_v6 2018-06-04 22:00:40 +10:00
Markus Ongyerth 7b07b3f95d Fix type in wlr_surface_get_extends 2018-06-01 16:36:04 +02:00
Markus Ongyerth 3994762ae0 Add wlr_surface_get_geometry
This function defaults and clips the xdg-surface geometry to the
bounding box of the surface + its subsurfaces, as specified by the
protocol spec.
2018-06-01 15:21:18 +02:00
emersion 6b7a55aa3d
Merge pull request #1020 from emersion/remove-check-dmabuf
render: remove wlr_renderer_check_import_dmabuf
2018-05-31 21:49:57 +01:00
emersion 21928cbe61
Merge branch 'master' into screencontent 2018-05-31 12:33:27 +01:00
Genki Sky d1cf9acbd5 cleanup: Use void for zero-parameter functions
Signed-off-by: Genki Sky <sky@genki.is>
2018-05-30 20:19:16 -04:00
emersion f90b024ad0
linux-dmabuf: fix bound checks for stride and height
- Fix bound checking for offset + stride * height
- Make offset bound checking more consistent
- Reject zero strides
2018-05-30 19:46:24 +01:00
emersion 135721118a
render: remove wlr_renderer_check_import_dmabuf
It's possible to implement it outside the renderer, by creating a
texture and destroying it right away. This reduces the API surface
of the renderer.
2018-05-30 17:08:15 +01:00
emersion 41e53d1499
Merge pull request #1019 from emersion/virtual-keyboard-destroy
virtual-keyboard: fix wlr_virtual_keyboard_manager_v1_destroy
2018-05-30 13:51:34 +01:00
emersion 28020ff577
Only allow one modifier per DMA-BUF, split attributes struct in render/ 2018-05-30 09:29:12 +01:00
emersion f580112dca
virtual-keyboard: fix wlr_virtual_keyboard_manager_v1_destroy 2018-05-30 09:25:46 +01:00
emersion 87fe9f3466
Merge pull request #1014 from RyanDwyer/fix-wlr-box-contains-point
Fix wlr_box_contains_point comparison
2018-05-29 19:03:29 +01:00
emersion 2681352e04
export-dmabuf: permanently fail if backend doesn't implement export_dmabuf 2018-05-29 18:47:19 +01:00
emersion a16ad4327a
Update protocol 2018-05-29 18:47:19 +01:00
emersion 65198b0aab
export-dmabuf: assert number of planes 2018-05-29 18:47:19 +01:00
emersion 2432c41a49
export-dmabuf: correctly send the number of planes per layer 2018-05-29 18:47:18 +01:00
emersion 3f9796112e
export-dmabuf: fix tv_sec_hi 2018-05-29 18:47:18 +01:00
emersion 00e108f2fc
export-dmabuf: correctly finish wlr_linux_dmabuf_attribs 2018-05-29 18:47:18 +01:00
emersion 1377e551ef
Update wlr-export-dmabuf protocol 2018-05-29 18:47:18 +01:00
emersion e26f4dff98
export-dmabuf: wait for the frame to be ready, send timestamp 2018-05-29 18:47:17 +01:00
emersion 36bd4795d4
export-dmabuf: add basic and incomplete implementation 2018-05-29 18:47:17 +01:00
emersion 9e26808c28
output, backend/drm: add wlr_output_export_dmabuf 2018-05-29 18:45:45 +01:00
emersion e1f56538a8
Merge pull request #999 from dcz-purism/virtual-keyboard
Support virtual keyboard protocol
2018-05-29 18:22:44 +01:00
Ryan Dwyer f8a831859f Fix wlr_box_contains_point comparison 2018-05-29 23:05:01 +10:00
Dorota Czaplejewicz 5334ee8bfd virtual-keyboard: add support for the virtual-keyboard-v1 protocol 2018-05-28 10:05:55 +02:00
emersion 47f097e09b
xdg-shell: add wlr_xdg_toplevel_set_tiled 2018-05-27 13:38:06 +01:00
emersion da504f9253
surface: remove wl_resource_post_event 2018-05-26 19:43:55 +01:00
emersion e849a68e6e
output: correctly clear screen when fullscreened 2018-05-20 13:44:18 +01:00
Drew DeVault 98088e78df
Merge pull request #977 from emersion/split-xdg-shell
Split xdg-shell into multiple files
2018-05-17 08:14:34 -04:00
emersion c74f5b1138
xdg-output: bump output manager version to 2 2018-05-17 09:30:10 +01:00
emersion 63fd2203fe
Add support for version 2 of the xdg-output protocol 2018-05-17 08:42:59 +01:00
emersion dbba1311b7
output: fix lingering hardware cursors 2018-05-15 18:13:26 +01:00
emersion 3036507463
xdg-shell: split into multiple files 2018-05-14 22:28:45 +01:00
emersion c7480d5084
xdg-shell-v6: rename shared private functions to prevent conflicts with xdg-shell stable 2018-05-14 19:16:46 +01:00
emersion facc5aa359
xdg-shell-v6: split into separate files 2018-05-13 22:32:03 +01:00
emersion cc12d03545
xdg-shell: fix positioner
The anchor and gravity bitfields in xdg-shell-unstable-v6 have
been changed to a plain enum whose values cannot be used as a
bitfield in xdg-shell. While it makes input validation easier, it
also makes positioner operations a pain in the ass.
2018-05-13 09:07:25 +01:00
emersion b28f06eca0
Don't use unsafe casts in wlr_xdg_popup_get_toplevel_coords 2018-05-12 22:53:11 +01:00
emersion 7a952dfa2d
xdg-output: fix logical_size
It should be the size of the output in layout coordinates. Prior to
this commit we were not applying the output transform to the size.
2018-05-12 16:25:52 +01:00
emersion db84379242
Send axis source event 2018-05-12 13:53:21 +01:00
emersion 0b58579564
Add support for discrete axis values 2018-05-12 13:34:58 +01:00
emersion cf5013416d
xdg-output: redesign resource destroy 2018-05-11 22:30:26 +01:00
emersion 13098a18ea
Fix hardware cursors scale & transform 2018-05-09 19:58:18 +01:00
Markus Ongyerth 8931452e1d add wlr_layer_surface_surface_at
Adds wlr_layer_surface_surface_at, this is consistent with the other
shell implementations, and simplifies handling in compositors.
2018-05-08 16:03:10 +02:00
emersion 5087199d5d
output-damage: limit the number of damaged rectangles 2018-05-05 14:28:55 +01:00
emersion caf9f9022c
Merge pull request #936 from emersion/full-hardware-cursors
output: always use hardware cursors if available
2018-05-04 19:00:45 +01:00
emersion 2959fcce1a
Merge pull request #951 from chebykinn/fix-maybe-uninitialized
Fix gcc maybe-uninitialized in wlr_cursor apply_output_transform
2018-05-04 16:56:53 +01:00
Drew DeVault 57d03a3eda
Merge pull request #931 from emersion/redesign-resource-destroy
Redesign resource destruction
2018-05-04 11:48:41 -04:00
Ivan Chebykin cec7cd2b39
Fix gcc maybe-uninitialized in wlr_cursor apply_output_transform 2018-05-04 18:41:51 +03:00
emersion d136026a2c
seat: implement inert seat resources 2018-05-03 22:03:44 +01:00
morganamilo 6305e6327f
Fix typos in comments and strings 2018-05-03 21:59:43 +01:00
emersion 5d37b14116
data-device: make sure resources are correctly destroyed 2018-05-03 20:22:51 +01:00
emersion 7843a48432
output: simplify and update code style 2018-05-03 18:46:17 +01:00
emersion ff4708d406
linux-dmabuf: correctly destroy resources 2018-05-03 18:45:30 +01:00
emersion 6d569def6d
compositor, surface: correctly destroy resources 2018-05-03 18:45:30 +01:00
Drew DeVault 2964248f42
Merge pull request #935 from agx/cursor-output-transform
wlr_cursor: transform absolute coordinates
2018-05-03 07:29:32 -04:00
emersion 2cff6dbd63
seat: split into multiple files 2018-05-03 10:30:47 +01:00
emersion 4b5b02057c
Merge pull request #937 from emersion/reorder-data-device
data-device: split into multiple files
2018-05-03 10:23:08 +01:00
Guido Günther 4efae8c177 wlr_cursor: transform absolute coordinates
Honor output rotation when processing absolute coordinates. This fixes
touch events on rotated outputs.

Fixes #928
2018-05-03 11:09:14 +02:00
emersion 1e563e7ecf
data-device: split into multiple files 2018-05-02 18:04:10 +01:00
emersion 6b3eac37f1
output: assert move_cursor if set_cursor is available 2018-05-02 15:04:35 +01:00
Drew DeVault 8f5045c871 Silently ignore touch_{motion,up} for unknown ids 2018-05-02 08:59:27 -04:00
emersion 225d182765
output: always use hardware cursors if available
This changes the `wlr_output_impl.set_cursor` function to take a
`wlr_texture` instead of a byte buffer. This simplifies the
DRM and Wayland backends since they were creating textures from
the byte buffer anyway.

With this commit, performance should be improved when moving the
cursor since outputs don't need to be re-rendered anymore.
2018-05-01 21:38:04 +01:00
emersion 2551ef8871
input-device: add output_name field, populate it from libinput 2018-04-29 14:30:09 +01:00
Drew DeVault a0f4903063
Merge pull request #926 from emersion/fix-x11-backend-memory-leaks
Fix some backend memory leaks
2018-04-29 08:00:59 -04:00
emersion f8e0a03451
backend/x11: correctly destroy input devices 2018-04-28 12:55:36 +01:00
emersion 79da4c175e
backend/headless: remove useless destructor 2018-04-28 12:48:05 +01:00
emersion 6e7c0b57f6
cursor: use NAN for unspecified axes, refactor absolute warping code 2018-04-28 09:24:38 +01:00
emersion 126f12e428
xdg-shell: fix invalid xdg-positioner cast 2018-04-26 18:53:59 +01:00
emersion 43012f3740
compositor: redesign how resources are managed
All public resource creators now take a new ID for the resource
and an optional list where the resource link is added. When the
resource is destroyed it is its own responsibility to remove
itself from the list. This removes the need for the caller to add
a destroy listener.

This commit fixes a few segfaults with resources not removed from
the list when destroyed.
2018-04-26 17:51:06 +01:00
Drew DeVault 979b1b22d5
Merge pull request #914 from emersion/misc-segfault-fixes
Misc segfault fixes
2018-04-26 17:37:27 +02:00
emersion 874909dca6
xdg-shell: fix invalid wlr_xdg_positioner alloc 2018-04-26 15:59:23 +01:00
emersion fcb7ad925d
layer-shell: fix use-after-free when client requests an invalid layer 2018-04-26 15:58:41 +01:00
Drew DeVault 93ebd33aa8
Merge pull request #890 from agx/layer-shell-empty-output-crash
layer-shell: Fix crash when cursor is intially outside any output
2018-04-26 14:31:35 +02:00
Guido Günther d81f0170a3 layer-shell: Don't crash when the compositor didn't find a suitable output
In that case it must have closed the surface.
2018-04-26 14:08:30 +02:00
Drew DeVault fecb971518
Merge pull request #902 from emersion/various-memory-leaks
Various memory leaks
2018-04-26 11:34:49 +02:00
emersion 449f06556a
Destroy wlr_surface with wlr_renderer 2018-04-26 00:11:36 +01:00
emersion d47713ac0f
compositor: destroy subsurface resources with wlr_subcompositor 2018-04-25 23:53:44 +01:00
emersion 89a9c96fab
compositor: make wlr_compositor_destroy destroy resources 2018-04-25 23:53:44 +01:00
emersion 625a7a48dc
Don't use the wlr_ prefix for static functions 2018-04-25 23:51:00 +01:00
emersion b0d99f5c67
Remove wlr_ prefix from local symbols 2018-04-25 23:00:46 +01:00
emersion 8e2f3056f8
layer-shell: fix small memory leak 2018-04-24 22:40:48 +01:00
emersion bc0bfde5ee
cursor: allow to call wlr_cursor_wrap_absolute with zero 2018-04-24 19:46:29 +01:00
emersion 38064f1d18
Fix protocol error when a client destroys and re-creates a subsurface 2018-04-23 21:50:15 +01:00
Drew DeVault 941f88ce23 Fix popup positioning & double popups 2018-04-23 11:24:06 +02:00
Drew DeVault 52baf3dd8a Move get_geometry call back to xdg-shell 2018-04-23 11:24:06 +02:00
Drew DeVault 0a0627f5d0 Finish forward-porting @acrisci's positioner work 2018-04-23 11:24:06 +02:00
Drew DeVault 2e3d901ac5 Forward-port xdg-shell-v6 positioner improvements 2018-04-23 11:24:06 +02:00
Drew DeVault 278aa84619 Basic layer popup rendering 2018-04-23 11:24:06 +02:00
Drew DeVault d3cdb00208 Add (shitty) support for popups to layer example 2018-04-23 11:24:06 +02:00
Drew DeVault 6b7b64ec1e Generalize xdg-shell popups and add to layer-shell 2018-04-23 11:22:23 +02:00
Drew DeVault 625bc7b8b3 assert(surface->output); after new_surface emit 2018-04-23 10:45:48 +02:00
Drew DeVault 177b548b15 Update layer shell with optional wl_output 2018-04-22 18:57:45 +02:00
emersion 3bce5dfc9f
Fix segfaults in wlr_surface_is_* 2018-04-21 19:04:48 +01:00
emersion bfcd3f3707
Add wlr_subcompositor 2018-04-21 19:02:39 +01:00
emersion fa84b267e0
Remove wlr_surface::subsurface 2018-04-21 18:40:25 +01:00
Markus Ongyerth c8ccb1bef3 reorder xkb state handling in wlr_keyboard
wlr_keyboard manages the xkb-common state of the compositor.
It used to update the state, update the modifiers, then notify the
compositor.
When [Shift_L] was pressed and released, this resulted in an event chain:
  Modifiers: Shift
  Key: Shift_L (Pressed)

  Modifiers:
  Key: Shift_L (Release)

The xkb-docs state that the state should be updated *after* the key was
handled [1], to prevent the new state from influencing the actual key
generated.

To achieve this, the event to the compositor is emitted, *before*
wlroots handles the xkb and internal keyboard state.

With this patch applied, the emitted events ill be:
  Modifiers:
  Key: Shift_L (Pressed)

  Modifiers: Shift
  Key: Shift_L (Release)

[1] https://xkbcommon.org/doc/current/group__state.html#gac554aa20743a621692c1a744a05e06ce
2018-04-18 11:54:59 +02:00
emersion 94fa6c88f4
output: don't emit the mode event if it hasn't changed
This also fixes #535.
2018-04-18 00:15:25 +01:00
emersion 1b802d9251
Make wlr_renderer_scissor take normal coords instead of upside-down ones 2018-04-12 19:38:33 -04:00
Drew DeVault 8f4039d799
Merge pull request #861 from emersion/fix-output-transform-compose
Fix wlr_output_transform_compose
2018-04-12 19:27:57 -04:00
emersion 31c8bdc277
Fix wlr_output_transform_compose 2018-04-12 19:05:05 -04:00
emersion fa0be972bb
Fix wlr_xdg_surface_surface_at for popups 2018-04-12 17:17:32 -04:00
Drew DeVault bef5c1fd56
Merge pull request #850 from emersion/remove-backend-egl
backend: remove wlr_backend_get_egl
2018-04-08 11:21:21 -04:00
emersion d2ebbd103c
backend: remove wlr_backend_get_egl 2018-04-08 11:00:56 -04:00
Drew DeVault bf68854a38 Fix destruction of popups without grabs
Fixes #846
2018-04-07 12:21:21 -04:00
Drew DeVault ae4cef9e41
Merge pull request #825 from emersion/surface-iterators
Add surface iterators
2018-04-05 23:06:29 -04:00
Drew DeVault ec0ce8ae1c Fix sending updates to xdg-output resources
Fixes #836
2018-04-05 18:22:48 -04:00
Drew DeVault 6710de9878 Merge branch 'master' into xwayland-dnd 2018-04-05 15:04:49 -04:00
emersion 4a9a9eae9a
Add surface iterators 2018-04-05 14:18:17 -04:00
emersion 19b576734e
Merge pull request #834 from emersion/surface-is-subsurface
Add wlr_surface_is_subsurface and wlr_subsurface_from_surface
2018-04-05 14:16:45 -04:00
emersion aced024819
Add wlr_surface_is_subsurface and wlr_subsurface_from_surface 2018-04-05 14:00:53 -04:00
Drew DeVault abfe7923c4 Add wlr_xdg_output_manager 2018-04-05 12:40:30 -04:00
emersion 3ea425d4e2
Fix xdg-shell popups, add wlr_xdg_surface_surface_at 2018-04-04 17:45:24 -04:00
emersion c9d21106b4
Add wlr_xdg_surface_v6_surface_at and wlr_wl_shell_surface_surface_at 2018-04-04 17:42:16 -04:00
emersion 1a8b24bdd2
rootston: fix view_at 2018-04-04 17:16:35 -04:00
emersion d16127b3cb
Fix wlr_surface_subsurface_at, change it to be wlr_surface_surface_at 2018-04-04 16:48:23 -04:00
Drew DeVault 36e94b2a8e Actually fix input inhibitor destructor 2018-04-03 16:58:06 -04:00
Drew DeVault 1fa3ca3152 Revert "Add destructor to inhibitor"
This breaks shit

This reverts commit 657d2c9a69.
2018-04-03 16:41:01 -04:00
Drew DeVault 657d2c9a69 Add destructor to inhibitor 2018-04-03 16:01:30 -04:00
Drew DeVault ef4e833f13 Add wlr_input_inhibitor 2018-04-03 14:06:52 -04:00
emersion 58ac05c276
Merge branch 'master' into xwayland-dnd 2018-04-03 10:38:46 -04:00
Drew DeVault 333ab59902 Add wlr_surface_is_*_surface
And wlr_*_surface_from_wlr_surface
2018-04-02 20:42:02 -04:00
emersion 8836b4f024
Merge branch 'master' into xwayland-dnd 2018-04-02 15:57:04 -04:00
Tony Crisci 5a47da1ea6 annotate wlr-output-layout coord variables 2018-04-01 00:17:27 -04:00
Drew DeVault 1778818a50 Don't destroying all layer surfaces on client d/c 2018-03-31 00:22:09 -04:00
Drew DeVault e19ee6d469 Add wlr_surface_point_accepts_input
Ref https://github.com/swaywm/sway/pull/1674
2018-03-30 23:02:11 -04:00
emersion 6bbf507082
surface: fix texture not updated on commit
When a client attaches a wl_drm or a linux_dmabuf buffer, we only
update it if the size is different from the one of the old buffer.
This means that if the client attaches a new, updated buffer with
the same size as the old buffer, the texture won't get updated.

This commit changes this behavior and re-creates the texture if
the client attaches a new buffer, without requiring the size to be
different.
2018-03-29 19:44:57 -04:00
emersion d5f46f4db4
data-device: redesign wlr_data_source 2018-03-29 17:53:13 -04:00
Drew DeVault 4137d9fc80 Destroy layer surfaces on client destroyed 2018-03-29 16:30:09 -04:00
emersion 743466d475
data-device: add seat.drag_source 2018-03-29 11:33:40 -04:00
emersion a316396eab
Merge pull request #720 from acrisci/xdg-positioner
xdg-positioner
2018-03-29 01:02:40 -04:00
Tony Crisci 2e63d1a0ca toplevel_box to toplevel_sx_box 2018-03-28 23:24:39 -04:00
Tony Crisci cf13a6d9c6 address toplevel coords issue 2018-03-28 20:09:20 -04:00
Tony Crisci 967bccffcd remove xdg-positioner wlr wrappers 2018-03-28 19:42:17 -04:00
Tony Crisci 8b967fc573 bug: dont slide over too far 2018-03-28 19:00:49 -04:00
Tony Crisci bf5ae85683 return early when no dest_x/y in output layout closest point 2018-03-28 18:40:55 -04:00
Tony Crisci bd828e23de dont allocate xdg-positioner attrs 2018-03-28 18:33:21 -04:00
Tony Crisci 376d1cc0da rename xdg-positioner structs 2018-03-28 18:30:38 -04:00
emersion 3effe153bc
xwayland: make wayland → xwayland work 2018-03-28 17:32:52 -04:00
Tony Crisci 4ab88a5330 xdg-positioner bugfix 2018-03-28 17:04:55 -04:00
Tony Crisci 0bfcce50a9 xdg-positioner: honor constraint flags 2018-03-28 16:55:16 -04:00
Tony Crisci dbffda7549 xdg-positioner wlr abstractions 2018-03-28 16:27:08 -04:00
emersion 2a34b154e6
xwayland: send DND_DROP 2018-03-28 15:33:23 -04:00
emersion 73394deb76
xwayland: send DND_POSITION 2018-03-28 14:16:14 -04:00
emersion 0d7a81ccdf
xwayland: send DND_ENTER 2018-03-28 12:59:11 -04:00
Drew DeVault 324b9d910d Remove width_mm from wlr_touch events 2018-03-28 11:04:40 -04:00
Drew DeVault a35a5786b0 Remove width_mm from wlr_pointer events 2018-03-28 10:46:50 -04:00
Tony Crisci 41e54ba632 Merge branch 'master' into xdg-positioner 2018-03-28 00:20:39 -04:00
Tony Crisci 330ee08126
Merge pull request #744 from emersion/texture-redesign
Redesign wlr_texture
2018-03-28 00:14:57 -04:00
Drew DeVault 7d89e7e58d Assign layer surface role 2018-03-27 23:08:41 -04:00
Drew DeVault 96a8df2f9a Fix ack configure/configure flow
Prevents FOUC/improves frame perfect rendering goal
2018-03-27 22:50:55 -04:00
Drew DeVault 52fe2688ea Address @emersion's feedback 2018-03-27 18:51:41 -04:00
Drew DeVault e841e5602b Address @emersion's feedback 2018-03-27 18:50:32 -04:00
Drew DeVault 86ca4bea6d Fix layer rendering/layout bugs 2018-03-27 18:50:32 -04:00
Drew DeVault d1c0e6fe2c Add layer_surface.close 2018-03-27 18:50:32 -04:00
Drew DeVault 4bf936360d Arrange & render layer surfaces 2018-03-27 18:50:09 -04:00
Drew DeVault fcf8c6c8a2 Fix issues preventing layer from getting allocated
Now all of the steps to get rootston a reference to the layer surface
are correctly wired up.
2018-03-27 18:50:09 -04:00
Drew DeVault 88eec637a4 Address feedback 2018-03-27 18:50:09 -04:00
Drew DeVault 1628730b09 Add wlr_layer_surface_configure 2018-03-27 18:50:09 -04:00
Drew DeVault 4a8c0c0784 Destroy layer surfaces when client is destroyed 2018-03-27 18:50:09 -04:00
Drew DeVault b06105b564 Implement layer surface requests 2018-03-27 18:50:09 -04:00
Drew DeVault 3ba57fccd1 Wire up layer surface resources to stubs 2018-03-27 18:50:09 -04:00
Drew DeVault f29d8b55ae Initial scaffolding of layer shell 2018-03-27 18:50:09 -04:00
Tony Crisci 8371e2f41d implement flip_x 2018-03-27 14:49:31 -04:00
emersion 171e28eaff
xdg-shell: don't destroy role resources on unmap, move toplevel fields
Ports 5233801530 and
334bab543d to xdg-shell stable.
2018-03-27 10:25:02 -04:00
Tony Crisci bbd0e23fa7 xdg-positioner constraint detection 2018-03-26 23:48:32 -04:00
emersion 334bab543d
xdg-shell-v6: move toplevel specific fields in wlr_xdg_toplevel_v6 2018-03-26 19:32:21 -04:00
emersion adf4fb08dd
Merge branch 'master' into texture-redesign 2018-03-26 19:13:13 -04:00
emersion 5233801530
xdg-shell-v6: don't destroy role resources on unmap
The motivation for this is:
- `get_popup` and `get_toplevel` allocate role-specific resources.
- On the first non-null commit, the surface gets mapped.
- On a null commit, the surface gets unmapped. It can be mapped
  again with a non-null commit.
- When the role object (xdg-toplevel or xdg-popup) is
  destroyed, the surface is unmapped and role-specific resources
  are destroyed. The client can call `get_popup` or `get_toplevel`
  again on that surface.
- When the xdg-surface object is destroyed, the surface is
  unmapped, role-specific resources are destroyed and the surface
  itself is destroyed.
2018-03-26 18:35:45 -04:00
Tony Crisci 4da18f7fc3 xdg-positioner attrs 2018-03-26 12:46:04 -04:00
Tony Crisci 5617a59598
Merge pull request #741 from emersion/unmapped-surface-destroy
xdg-shell, xdg-shell-v6: don't emit unmap if surface is unmapped
2018-03-25 11:04:37 -04:00
emersion c63d94483b
Redesign wlr_texture
- Textures are now immutable (apart from those created from raw
  pixels), no more invalid textures
- Move all wl_drm stuff in wlr_renderer
- Most of wlr_texture fields are now private
- Remove some duplicated DMA-BUF code in the DRM backend
- Add more assertions
- Stride is now always given as bytes rather than pixels
- Drop wl_shm functions

Fun fact: this patch has been written 10,000 meters up in the air.
2018-03-24 23:48:32 -04:00
Tony Crisci f53575e3a3 unified xdg-surface close 2018-03-24 15:11:26 -04:00
Guido Günther b1852096c5 linux-dmabuf: Support multi plane formats like NV12 2018-03-23 09:03:31 +01:00
Guido Günther 805039457a wlr_surface: fix indentation 2018-03-23 08:59:48 +01:00
Tony Crisci 30b8fb5572 Merge branch 'master' into xdg-positioner 2018-03-22 20:06:53 -04:00
Dominique Martinet e86cd4dc33 wlr_pointer: fix potential null deref
if pointer is null here we'd access pointer->events... anyway
2018-03-22 21:27:49 +01:00
Dominique Martinet de955a0f63 xdg_popup_grab: add listener on seat destroy 2018-03-22 21:25:41 +01:00
emersion 731ee24089
xdg-shell, xdg-shell-v6: don't emit unmap if surface is unmapped
Some clients create an xdg_surface, then create an xdg_toplevel,
but don't map it and destroy it right after. The xdg_surface ends
up in a state where it isn't mapped but role-specific resources
have been allocated. xdg_surface_unmap needs to free these
resources without emitting the unmap signal.
2018-03-21 20:11:53 +01:00
emersion c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h 2018-03-19 23:16:29 +01:00
emersion 6ecb0eefcb
render/gles2: transpose matrices before binding them
Setting glUniformMatrix3fv's transpose parameter to GL_TRUE is
not allowed for OpenGL ES 2.

This adds a wlr_matrix_transpose function.
2018-03-19 20:21:02 +01:00
Drew DeVault 1956d3cedb
Merge pull request #722 from emersion/matrix-redesign
Matrix redesign
2018-03-17 15:22:00 -04:00
Tony Crisci 09413aa7f1
Merge pull request #711 from emersion/map-unmap
Add map/unmap to xdg-shell
2018-03-17 10:00:54 -04:00
emersion 7894fca224
matrix: rename wlr_matrix_texture to wlr_matrix_projection 2018-03-15 21:26:45 +01:00
emersion e607d0f7ee
xdg-shell: add map/unmap support 2018-03-15 20:15:09 +01:00
emersion 42cc575266
xdg-shell-v6: fix wl_list_remove called twice 2018-03-15 20:14:47 +01:00
emersion 361d7c857e
xdg-shell-v6: don't leak wlr_xdg_surface_v6_configure.toplevel_state 2018-03-15 19:40:57 +01:00
emersion 1914a1aa2b
surface: drop wlr_surface_get_matrix 2018-03-15 18:35:22 +01:00
emersion 8b58e1a3ad
Merge branch 'master' into matrix-redesign 2018-03-15 15:48:09 +01:00
emersion 824a95ad19
matrix: use 2D matrices 2018-03-15 15:33:58 +01:00
emersion de0e40d621
Merge pull request #698 from agx/linux-dmabuf
Add initial linux_dmabuf protocol support
2018-03-15 12:45:07 +01:00
Guido Günther eb4337b5ee Wire up linux_dmabuf in rootston 2018-03-15 12:40:18 +01:00
Guido Günther 14cdb6153f Add initial linux_dmabuf protocol support
Tested with

    ./weston-simple-dmabuf-drm
    ./weston-simple-dmabuf-drm --import-immediate=1
    ./weston-simple-dmabuf-drm --y-inverted=1
    (and combinations)

Supports only single plane XRGB dmabufs for now.
2018-03-15 12:40:18 +01:00
emersion d26b67cb06
matrix: unify API, don't use array pointers 2018-03-15 11:10:56 +01:00
emersion b6a3f240c7
matrix: move to types/ 2018-03-15 09:11:27 +01:00
Tony Crisci 8836b167bf store xdg-positioner properties on the popup 2018-03-13 19:21:08 -04:00
Tony Crisci b2926a6c62 differentiate xdg-toplevel roles 2018-03-13 19:11:02 -04:00
emersion ace738dbca
xdg-shell-v6: next_geometry and geometry fields are not longer pointers in wlr_xdg_surface_v6 2018-03-13 22:17:25 +01:00
emersion 149209b72e
xdg-shell-v6: rename toplevel and popup fields in wlr_xdg_surface_v6 for consistency 2018-03-13 22:09:44 +01:00
emersion 657e5c8c0d
xdg-shell-v6: changed wlr_xdg_surface_v6_configure.toplevel_state to be NULL if surface isn't a toplevel 2018-03-13 22:05:35 +01:00
emersion e74ddaaf10
xdg-shell-v6: redesign the configure/ack_configure workflow 2018-03-13 19:57:21 +01:00
Tony Crisci 647c2e68ba
Merge pull request #696 from emersion/fix-output-layout-destroy-global
output-layout: fix output global not destroyed
2018-03-12 21:41:45 -04:00
emersion adec3f5c0f
xdg-shell-v6: add unmap support, add more protocol errors 2018-03-12 10:41:57 +01:00
emersion 8e3d294d6a
output: fix trailing cursor at (0, 0) on startup 2018-03-11 11:21:40 +01:00
emersion 3f072bedd9
xdg-shell-v6: add map signal 2018-03-10 11:18:50 +01:00
emersion a951fbb264
output: don't move hidden cursors
When using the DRM backend and multiple outputs, that reduces the
number of commits.
2018-03-07 10:22:39 +01:00
Scott Anderson 3c9fc7c68e Add const to x11 and input interfaces 2018-03-06 21:16:18 +13:00
emersion aa2b62fbff
output-layout: fix output global not destroyed 2018-03-01 17:53:15 +01:00
Drew DeVault 0820557c8c
Merge pull request #693 from emersion/fix-output-bind-multiple
Fix clients binding multiple times to the same output
2018-03-01 11:23:41 -05:00
emersion 90148e64ab
Fix clients binding multiple times to the same output 2018-03-01 10:19:48 +01:00
Drew DeVault 3296365ce5
Merge pull request #659 from agx/alpha
Make wlr_render_with_matrix use alpha
2018-02-25 13:16:35 -05:00
Guido Günther d08792bfff Add alpha to wlr_render_with_matrix
so we can use the alpha channel to e.g. blend in textures
2018-02-25 13:47:48 +01:00
Tony Crisci b7b86a9591
Merge pull request #641 from Ongy/idle-inhibit
Add idle-inhibit implementation
2018-02-24 10:15:18 -05:00
Markus Ongyerth 67285c1d57 idle-inhibit: style adjustments and motivation 2018-02-23 13:18:05 +01:00
emersion b1e2718dd7
xwayland: fix some use-after-free in xwm 2018-02-23 10:20:53 +01:00
Tony Crisci 1c1b5b1b17
Merge pull request #662 from emersion/surface-resize-frame-done
surface: don't reset frame_callback_list on resize
2018-02-22 17:33:22 -05:00
emersion f0404f6d75
surface: don't reset frame_callback_list on resize 2018-02-22 22:40:02 +01:00
Markus Ongyerth a715826751 move activity_notify into events in wlr_idle
This moves the `struct wl_signal activity_notify` in `struct wlr_idle`
into a local `struct {} events` to keep consistency with other modules
in the library.
2018-02-22 21:14:28 +01:00
Markus Ongyerth 87a7afb641 idle-inhibit: second feedback pass 2018-02-21 16:22:04 +01:00
Markus Ongyerth 3016133f91 idle-inhibit: feedback pass 2018-02-20 13:41:10 +01:00
emersion 4eaffc3e45
primary-selection: fix crash in device_handle_set_selection 2018-02-20 12:33:13 +01:00
Drew DeVault 1d9be89e2d
Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
Drew DeVault 09cfa39392
Merge pull request #632 from acrisci/output-layout-adjacent
add wlr_output_layout_adjacent_output
2018-02-19 18:00:32 -05:00
Scott Anderson 86269052eb Explicitly export EFL symbols 2018-02-19 14:26:40 +13:00
Drew DeVault c951000198 Remove XXX comment 2018-02-18 11:21:08 -05:00
Tony Crisci 9933b7ad95 fix direction determination 2018-02-17 17:54:57 -05:00
Tony Crisci d2c7defa10 Merge branch 'master' into output-layout-adjacent 2018-02-17 16:34:32 -05:00
Markus Ongyerth 50d573b2ca implements the idle_inhibit protocol type
This adds the types/wlr_idle_inhibit_v1 implementation.
2018-02-17 12:37:12 +01:00
Dominique Martinet 4941befeb0
Merge pull request #1 from emersion/martinetd/xdg_shell
Wrap wl_resource_get_user_data into safer helper functions (for xdg-shell stable too)
2018-02-16 18:52:04 +01:00
emersion 4b354745fe
xdg-shell: wrap wl_resource_get_user_data 2018-02-16 18:38:06 +01:00
emersion 717bdccb6e
Merge remote-tracking branch 'upstream/master' into martinetd/xdg_shell 2018-02-16 18:25:58 +01:00
Drew DeVault 8c1cc45c7d
Merge pull request #629 from emersion/safe-wl-resource-get-user-data
Wrap wl_resource_get_user_data into safer helper functions
2018-02-16 09:27:26 -05:00
Dominique Martinet ac78bdb6bc xdg shells: fix typo s/positives/positive/ 2018-02-15 12:26:20 +01:00
Dominique Martinet 56ab3e9b10 xdg_shell stable: fix zero-sized positioner anchor_rect
We used 0 as unset-check value before, which was fine when 0-width
was invalid, but isn't anymore
2018-02-15 08:07:57 +01:00
Dominique Martinet 714f90a9d0 xdg_shell stable: allow zero-sized positioner set_anchor_rect
This is a protocol difference with xdg-shell-unstable-v6
2018-02-15 07:29:55 +01:00
Dominique Martinet d1b28ec812 wayland protocol headers: use double-quote for includes
These headers are not installed so we should look for these locally
2018-02-15 07:17:02 +01:00
Dominique Martinet 6ae96c4832 wlr_xdg_shell: (style) add break to final switch case 2018-02-15 07:16:28 +01:00
Tony Crisci 85871cb666 add wlr_output_layout_adjacent_output 2018-02-14 14:10:31 -05:00
Rodrigo Lourenço 168e26489a Add missing dependencies 2018-02-14 18:42:39 +00:00
Dominique Martinet 1080bf69f8 xdg_shell: add input validatoin for positioner anchor/gravity 2018-02-14 19:02:24 +01:00
Dominique Martinet 7d26a6debd xdg-shell stable: copy-pasta implementation 2018-02-14 12:52:30 +01:00
emersion 392d54a35d
Wrap wl_resource_get_user_data into safer helper functions
This ensures we're not incorrectly casting a resource.

Fixes #628
2018-02-13 23:48:46 +01:00
emersion c2e1474010
Reformat all #include directives 2018-02-12 21:29:23 +01:00
emersion 36ead80cd1
Make wlr_signal_emit_safe private 2018-02-12 19:52:47 +01:00
emersion 10ecf871f2
Remove wlr_backend.events.{output_remove,device_remove} 2018-02-12 10:36:43 +01:00
emersion 5e58d46cc1
Add wlr_signal_emit_safe 2018-02-12 09:12:31 +01:00
emersion a9632341bf
output_damage: listen to transform and scale output events 2018-02-11 13:07:00 +01:00
emersion ec837e3c9e
Introduce wlr_output_damage 2018-02-11 12:49:30 +01:00
emersion bf6d245400
Swap buffers with damage 2018-02-09 22:54:14 +01:00
emersion cdd55b5d19
Merge remote-tracking branch 'upstream/master' into output-damage 2018-02-09 14:50:26 +01:00
Vincent Vanlaer 8dcb2f2d6b Prevent cursor from getting stuck at infinity 2018-02-04 22:40:24 +01:00
emersion 1cea73d2d8
rootston: fix rotated views damage tracking 2018-02-04 11:59:04 +01:00
emersion faa57341ca
output: replace raw GL calls by wlr_renderer_* calls 2018-02-03 10:01:42 +01:00
emersion 3d3ea32137
Merge remote-tracking branch 'upstream/master' into output-damage 2018-02-03 00:15:44 +01:00
emersion 8eed857292
output: add destroy signal for wlr_output_cursor 2018-02-01 12:08:35 +01:00
emersion edb4c8d858
output: damage whole output when fullscreen surface size changes 2018-01-30 22:06:10 +01:00
emersion a295c805c4
output: fix output_damage_whole for scaled outputs 2018-01-30 21:42:12 +01:00
emersion babdd6ccf7
backend: fix use-after-free when destroying backends
The backend destroy signal is emitted before the output_remove
signal is. When the destroy signal is emitted listeners remove
their output_remove listener, so the output_remove signal is never
received and listeners have an invalid output pointer.

The correct way to solve this would be to remove the output_remove
signal completely and use the wlr_output.events.destroy signal
instead. This isn't yet possible because wl_signal_emit is unsafe
and listeners cannot be removed in listeners.
2018-01-30 19:45:57 +01:00
emersion 704130cc11
output: fix performance issues with wlr_output_schedule_frame 2018-01-30 14:45:02 +01:00
emersion d498855b9d
backend/drm: fix hw cursor position on rotated and scaled outputs
output: add wlr_output_transformed_resolution
2018-01-30 10:23:35 +01:00
emersion 51c22d39a4
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-29 23:24:09 +01:00
emersion 2cc989e097
output: restrict provided damage to output bounds 2018-01-29 23:21:30 +01:00
Tony Crisci ed5b1fdedd
Merge pull request #580 from emersion/screenshooter-renderer-backport
Backport screenshooter fixes from the renderer redesign v1
2018-01-29 17:13:23 -05:00
emersion 7881d039b6
rootston: fix output_damage_whole
This should fix artifacts when leaving fullscreen on rotated outputs.
2018-01-28 21:58:02 +01:00
emersion 5bbff20b8d
Fix assertion failed in data_source_notify_finish 2018-01-28 21:48:05 +01:00
emersion e049610b47
surface: copy buffer damage to surface damage 2018-01-28 21:29:51 +01:00
emersion 1ee61dbd0f
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-28 21:22:50 +01:00
emersion 485aa87468
output: fix fullscreen on transformed outputs 2018-01-28 10:40:38 +01:00
emersion 861d5bdff2
surface: fix damage when resizing a surface in QT apps 2018-01-27 21:49:40 +01:00
Guido Günther 1633b8d793 wlr_keyboard: use correct printf format string for keymap_size
keymap_size is a size_t. Otherwise the build fails on arm like

../types/wlr_keyboard.c: In function 'wlr_keyboard_set_keymap':
../include/wlr/util/log.h:34:17: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Werror=format=]
  _wlr_log(verb, "[%s:%d] " fmt, _strip_path(__FILE__), __LINE__, ##__VA_ARGS__)
                 ^
../types/wlr_keyboard.c:218:3: note: in expansion of macro 'wlr_log'
   wlr_log(L_ERROR, "creating a keymap file for %lu bytes failed", kb->keymap_size);
   ^~~~~~~
../types/wlr_keyboard.c:218:50: note: format string is defined here
   wlr_log(L_ERROR, "creating a keymap file for %lu bytes failed", kb->keymap_size);
                                                ~~^
                                                %u
2018-01-27 12:23:26 +01:00
emersion 7adf13e284
Fix flickering when switching VT 2018-01-27 11:16:42 +01:00
emersion 7111dd79ef
rootston: damage tracking for rotated views 2018-01-27 10:43:17 +01:00
emersion a011a1cb07
screenshooter: request a buffer swap 2018-01-26 22:41:19 +01:00
emersion 8d58ed502b
output: add wlr_output_schedule_frame 2018-01-26 22:39:23 +01:00
emersion ece2c1e4e2
Damage tracking for transformed outputs 2018-01-26 22:11:09 +01:00
emersion 6281deb90f
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-24 14:48:01 +01:00
Markus Ongyerth f946c10cb1 re-adds wlr_output_update_enabled
Re-add the wlr_output_update_enabled to make sure
wlr_output::events.enable is called when the output enabled state
changes.
2018-01-24 10:23:48 +01:00
emersion 4fa90b0511
Backport screenshooter fixes from the renderer redesign v1
This backports some changes to #319 to fix the screenshooter data
format. This also adds wlr_backend_get_renderer which will be
useful to support multiple renderers.
2018-01-23 22:06:54 +01:00
Markus Ongyerth 3cf7225cec decouples outputenable state and wl_output global
This decouples wlr_output_enable and the wl_global.
The previously internal functions wlr_output_(destroy/create)_global are
exposed and used automatically in the wlr_output_layout to create/tear
down the global.
The compositor can handle them itself if it wants to, but I think this
is the right moment to create/destroy the wl_output when the
wlr_output_layout is used.
2018-01-23 17:40:12 +01:00
emersion 4d282c8590
rootston: damage tracking for drag icons 2018-01-23 13:37:58 +01:00
emersion 3f1c4f5be7
rootston: damage tracking for wl_shell 2018-01-22 16:01:32 +01:00
emersion a8cb02f585
surface: add damage when subsurface moves 2018-01-22 10:34:23 +01:00
emersion f5507ec677
cursor: fix segfault when destroying a wlr_output_layout with a wlr_cursor attached 2018-01-22 09:29:52 +01:00
emersion 59c53e8333
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-21 22:18:06 +01:00
emersion 66ae4071a7
rootston: damage tracking for xdg popups 2018-01-21 21:06:37 +01:00
Johannes Schramm dcc743047b style: include brackets for if/while/for, even if it's a single statement 2018-01-21 16:28:21 +01:00
emersion eeffe11337
surface: add wlr_surface new_subsurface and wlr_subsurface destroy events 2018-01-21 14:22:33 +01:00
emersion 0365b587f0
output: add damage tracking via buffer age 2018-01-21 00:06:35 +01:00
emersion 4ca38b84ed
backend/drm: fix hardware cursors not moving
This adds back `wlr_output::needs_swap`. This allows a backend to
request buffer swaps even if the output isn't damaged. This is
needed by the DRM backend to trigger pageflips when the cursor
moves.
2018-01-20 16:43:14 +01:00
emersion ddafcb86a2
surface: add resize damage 2018-01-20 00:52:43 +01:00
emersion e29a0df8c1
output: fix software cursors damage tracking 2018-01-19 14:08:47 +01:00
emersion a0f24b809e
output: add damage event 2018-01-19 13:13:46 +01:00
emersion 443bd4cd89
output: fullscreen surface damage tracking 2018-01-19 11:20:27 +01:00
emersion f061a1da63
output: fix software cursor artifacts 2018-01-18 22:18:53 +01:00
emersion 59ba8f35ed
rootston: use surface damage 2018-01-18 21:34:10 +01:00
emersion bde255933e
output: add wlr_output::damage, fixes #572 2018-01-18 19:47:21 +01:00
Tony Crisci b6f29e87e8 dont use pointer for modifiers 2018-01-17 08:31:15 -05:00
Tony Crisci 43896af90f Merge branch 'master' into modifier-fixes 2018-01-17 08:27:47 -05:00
Drew DeVault b331c5c2c5
Merge pull request #549 from emersion/output-enabled
Add wlr_output::enabled
2018-01-15 20:53:13 -05:00
emersion 0eebaf98d0
drm: do not pageflip when enabling output 2018-01-15 21:49:37 +01:00
Heghedus Razvan 21cc5e6fef Add idle protocol
Signed-off-by: Heghedus Razvan <heghedus.razvan@gmail.com>
2018-01-10 14:32:41 +02:00
emersion 33c427a6aa
output_layout: disabled outputs are just like enabled outputs 2018-01-07 18:40:58 +01:00
Tony Crisci b40a5f084a keyboard grab enter with modifiers 2018-01-06 11:06:09 -05:00
Tony Crisci 2bd3a75f80 fix send modifiers in wlr-seat set keyboard 2018-01-06 10:31:32 -05:00
Tony Crisci 670d336099 Merge branch 'master' into modifier-fixes 2018-01-06 09:41:13 -05:00
Tony Crisci 9765232096 update xkb state on layout change 2018-01-06 09:36:57 -05:00
Tony Crisci ca0f456d6c wlr-keyboard set layout error handling 2018-01-06 09:06:19 -05:00
Tony Crisci fcab1e87ed fix data-device keyboard grab signature 2018-01-06 08:32:44 -05:00
emersion 8ebd7d4dbe
output: rename resolution event to mode 2018-01-06 12:42:32 +01:00
emersion 6fe380a176
output_layout: handle output enable event 2018-01-06 12:39:15 +01:00
Markus Ongyerth 6834067ef5 sends the modifiers on wlr_seat_set_keyboard
Without this, a client will lose modifiers for one keyboard, when a key
is pressed on the other.
With this the client will always use the modifiers tate of the keyboard
the key was pressed on.
2018-01-05 22:20:46 +01:00
Tony Crisci 0ef2df21f2 compositor modifier hook 2018-01-05 07:00:50 -05:00
emersion d9ecfbaf32
Add wlr_output enable event 2018-01-04 14:51:36 +01:00
emersion 771263380c
Add wlr_output::enabled 2018-01-04 12:46:15 +01:00
Tony Crisci ce3a48c316
Merge pull request #542 from emersion/abstract-data-source
Abstract data sources
2018-01-04 06:15:17 -05:00
emersion c599d8024c
Remove serial validation TODOs 2018-01-03 16:46:59 +01:00
Drew DeVault b23bd8ea28
Merge pull request #544 from emersion/fix-views-outside-output-layout
Fix views outside output layout
2018-01-01 11:45:08 -05:00
emersion 9ac9ba861f
Free fullscreen surface and cursors when destroying output 2017-12-31 13:00:35 +01:00
emersion 1fe1d64042
Fix views outside output layout 2017-12-31 12:49:06 +01:00
emersion 38ed3b4245
seat: rename selection_source to selection_data_source, remove unused data_device 2017-12-30 09:58:04 +01:00
emersion 720c1154dc
Fix use-after-free when destroying an offer 2017-12-30 09:26:48 +01:00
emersion b20aed66d6
Abstract wlr_primary_selection_source 2017-12-29 23:23:00 +01:00
emersion 062809723a
Data source resource now holds a `struct client_data_source *` 2017-12-29 23:01:35 +01:00
emersion f237b5c7a7
Make wlr_data_source abstract.
This removes some fields specific to sources coming from clients.

This adds some drag'n'drop-related callbacks.
2017-12-29 22:51:33 +01:00
Dominique Martinet d7cefccaee wlr_seat_destroy: emit seat itself as data on destroy event 2017-12-29 20:29:40 +01:00
Dominique Martinet 58488ec5ce wlr_seat: add destroy signal 2017-12-29 17:55:03 +01:00
Timidger 6e9cef4ed6
Don't send custom mode info twice on DRM refresh 2017-12-28 11:12:44 -06:00
Timidger f56ce11aa0
Fixes #535 send mode info on DRM refresh once
When DRM refreshed, wlr_output_set_mode is called. It would then call
the DRM set_mode callback which sends the updated matrix and mode info.

However once that call completed it would then immediantly send the
information again. This is handled poorly by xwayland, causing it to
scale up the clients twice.
2017-12-28 11:12:44 -06:00