Commit Graph

716 Commits

Author SHA1 Message Date
Drew DeVault d88f3c1eb3 Fix segfault when clicking rootston desktop 2018-04-03 11:30:37 -04:00
Drew DeVault 9ce53d7dc4
Merge pull request #804 from swaywm/keyboard-layers
Add keyboard input to layer surfaces
2018-04-02 20:45:39 -04:00
Drew DeVault 333ab59902 Add wlr_surface_is_*_surface
And wlr_*_surface_from_wlr_surface
2018-04-02 20:42:02 -04:00
Drew DeVault 9ae861c416 Address review feedback 2018-04-02 18:54:16 -04:00
Drew DeVault 37036df822 Handle layer surfaces below shell surfaces 2018-04-02 18:44:06 -04:00
Danilo Spinella 046d909e7a Change meson option names to use hypen
Replace underscore with hypen in meson option names, following style
recommendations.

http://mesonbuild.com/Style-guide.html#naming-options
2018-04-02 23:35:03 +02:00
Drew DeVault a94f4d0edc Always give keyboard focus to the topmost layer 2018-04-02 15:48:22 -04:00
Drew DeVault 883d8d306c Identify topmost interactive layer surface 2018-04-02 15:16:14 -04:00
Drew DeVault d466cc117f Don't reset exclusive between layer shell passes
This is not the intended behavior of exclusive zones, the second pass is
meant to respect the usable area.
2018-04-02 14:55:17 -04:00
Drew DeVault 937362b552 FIx crash on touch down 2018-03-31 09:55:41 -04:00
Orestis Floros 3f6823092a
Initialize roots_output to fix -Wmaybe-uninitialized
With -O2:
../rootston/desktop.c: In function ‘desktop_surface_at’:
../rootston/desktop.c:714:18: error: ‘roots_output’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   if ((surface = layer_surface_at(roots_output,
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      &roots_output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM],
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ox, oy, sx, sy))) {
      ~~~~~~~~~~~~~~~
2018-03-31 12:57:12 +03:00
emersion 692f1746cf
xwayland: specify xwm cursor stride in bytes 2018-03-31 00:22:58 -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
Drew DeVault 746e3759b7 Address review feedback 2018-03-30 20:34:00 -04:00
Drew DeVault 168f65fb7a Minor bugfixes 2018-03-30 18:28:21 -04:00
Drew DeVault e3eb487dc2 Add pointer support to layer shell example 2018-03-30 18:23:57 -04:00
Drew DeVault dc412c514b Find layer surfaces for input events 2018-03-30 17:27:10 -04:00
Drew DeVault 662f40b8ae Refactor cursor event passhtrough 2018-03-30 17:27:10 -04:00
emersion 865b0aa123
xwayland: rename map_notify to map for consistency 2018-03-30 11:01:23 -04:00
Drew DeVault b887af9a60 Fix maximized windows interaction with layer shell
If there were no layer surfaces the usable area of the output would be
an empty box.
2018-03-29 12:18:50 -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 27f450ac0e add todo for rotated unconstrained popup 2018-03-28 22:26:56 -04:00
Tony Crisci 71da20dbde add comment for output box in toplevel coords 2018-03-28 20:51:25 -04:00
Tony Crisci 67c8aec77f popup constraint handle empty output layout 2018-03-28 18:36:48 -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
Tony Crisci c5cd805098 positioner rootston cleanup and bugfix 2018-03-28 12:46:41 -04:00
Tony Crisci e2c4e1ef54 fix xdg-positioner left constrain bug 2018-03-28 12:12:00 -04:00
Drew DeVault ac219cbda6 Remove width_mm from tablet events 2018-03-28 12:05:37 -04:00
Tony Crisci 738f5e3344 cleanup xdg-positioner rootston code 2018-03-28 11:42:01 -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
Drew DeVault 3e5131e664 Address further review feedback 2018-03-27 21:28:22 -04:00
Drew DeVault a1d5d20914 Address some more feedback 2018-03-27 18:51:41 -04:00
Drew DeVault 52fe2688ea Address @emersion's feedback 2018-03-27 18:51:41 -04:00
Drew DeVault 776b81d499 Fix surface layer damage tracking 2018-03-27 18:50:32 -04:00
Drew DeVault 0e318df13d Add margin animation to the example demo 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 097e87ca9f Handle usable area for maximized windows
Also fixes some bugs
2018-03-27 18:50:32 -04:00
Drew DeVault ab6c2bf584 Reset exclusivity after shell layer
Also fixes an issue which was applying exclusivity to all edges
2018-03-27 18:50:32 -04:00
Drew DeVault df9dbf3170 Fix rebase issues; rearrange layers on destroy 2018-03-27 18:50:32 -04:00
Drew DeVault 11c57d22b0 Use 0 for default width/height (rather than -1) 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 b73c4f48c1 Fix exclusive zone among other layers 2018-03-27 18:50:32 -04:00
Drew DeVault 8c98c18880 Gracefully deal with outputs being removed 2018-03-27 18:50:32 -04:00
Drew DeVault f444a0d14c Implement layer surface damage 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 b31ce4220c Add broken test client and rootston stubs 2018-03-27 18:50:09 -04:00
Drew DeVault 88eec637a4 Address feedback 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 575bc81d54
Merge pull request #754 from emersion/popup-map-unmap-damage
[WIP] xdg-shell: damage view when popup is mapped/unmapped
2018-03-27 17:37:03 -04:00
emersion 4abca435cc
rootston: damage view when xdg-popup is mapped/unmapped 2018-03-27 17:27:58 -04:00
emersion 19a525f3b5
rootston: damage view when zxdg-popup-v6 is mapped/unmapped 2018-03-27 17:24:25 -04:00
Tony Crisci edb643fc6c basic xdg-positioner 2018-03-27 17:16:08 -04:00
Tony Crisci 9ff84db06d unconstrain stubs 2018-03-27 15:13:35 -04:00
Tony Crisci 8371e2f41d implement flip_x 2018-03-27 14:49:31 -04:00
Drew DeVault 1ed90541f9
Merge pull request #753 from emersion/xdg-shell-unmap-destroy
xdg-shell-v6: don't destroy role resources on unmap
2018-03-27 13:15:32 -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
Drew DeVault e9ccb705fb
Merge pull request #758 from martinetd/unfullscreen
rootston: Fix segfault in seat unfullscreening
2018-03-27 08:35:49 -04:00
Dominique Martinet a0b52a0dff Fix x11 backend
Need to include wlr/config.h before using the various WLR_HAS_xxx defines
2018-03-27 09:20:21 +02:00
Dominique Martinet 0c4d347d1e rootston: Fix segfault in seat unfullscreening
==32557==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000425f96 bp 0x7fff8ac19de0 sp 0x7fff8ac19d20 T0)
==32557==The signal is caused by a READ memory access.
==32557==Hint: address points to the zero page.
    #0 0x425f95 in roots_seat_set_focus ../rootston/seat.c:737
    #1 0x40bcd6 in roots_cursor_press_button ../rootston/cursor.c:272
    #2 0x40c1f7 in roots_cursor_handle_button ../rootston/cursor.c:298
    #3 0x42179b in handle_cursor_button ../rootston/seat.c:58
    #4 0x7f1651062367 in wlr_signal_emit_safe ../util/signal.c:29
    #5 0x7f165101b532 in handle_pointer_button ../types/wlr_cursor.c:344
    #6 0x7f1651062367 in wlr_signal_emit_safe ../util/signal.c:29
    #7 0x7f1650ff633b in handle_pointer_button ../backend/libinput/pointer.c:85
    #8 0x7f1650ff5291 in wlr_libinput_event ../backend/libinput/events.c:215
    #9 0x7f1650ff3990 in wlr_libinput_readable ../backend/libinput/backend.c:35
    #10 0x7f1650d88c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11)
    #11 0x7f1650d87449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449)
    #12 0x418e90 in main ../rootston/main.c:81
    #13 0x7f164ff7ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29)
    #14 0x405829 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x405829)

introduced by #680
2018-03-27 09:17:47 +02:00
Tony Crisci bbd0e23fa7 xdg-positioner constraint detection 2018-03-26 23:48:32 -04:00
Drew DeVault d1d983a303
Merge pull request #680 from Ongy/roots_unfullscreen
unset fullscreen when surface is brought to front
2018-03-26 23:39:29 -04:00
Drew DeVault b1c4f01bad
Merge pull request #713 from ManDay/master
Make X11 fully optional
2018-03-26 23:20:46 -04:00
Markus Ongyerth 07ca976489 only unfullscreen when necessary
Check whether the newly focused view is the same as the one currently
fullscreen on that output, or override redirect and don't unfullscreen
in these cases.
2018-03-26 23:18:50 -04:00
Markus Ongyerth 43d7459734 unset fullscreen when surface is brought to front
The output fullscreen surfaces are drawn in front of everything, without
consideration for view z-order.
If a view is brought to front, unset any fullscreen view that would
cover this view to make sure the view is visible.
2018-03-26 23:18:50 -04:00
Drew DeVault 706f77e3c7 Address review feedback 2018-03-26 23:15:21 -04:00
emersion 334bab543d
xdg-shell-v6: move toplevel specific fields in wlr_xdg_toplevel_v6 2018-03-26 19:32:21 -04:00
Drew DeVault 891610081f
Merge pull request #751 from emersion/rotated-surface-damage
Fix damage tracking for rotated surfaces
2018-03-26 18:05:35 -04:00
emersion 140bc19476
rootston: add -D flag to enable damage tracking debugging 2018-03-26 17:34:46 -04:00
emersion 4555fc8a54
Fix damage tracking for rotated surfaces
It was broken because the damage extents were rotated about its
own center, not about the center of the surface.

This adds a new wlr_region_rotated_bounds that rotates regions.
This allows us to have only one code path (for both non-rotated
views and rotated views) and optimizes rendering for rotated
views.
2018-03-26 15:31:08 -04:00
emersion 793c3b3047
render: add simple functions to render rectangles and ellipses 2018-03-26 12:41:51 -04:00
Tony Crisci f53575e3a3 unified xdg-surface close 2018-03-24 15:11:26 -04:00
emersion a854c2f246
Merge branch 'master' into gles2-renderer-redesign 2018-03-23 00:55:55 +01:00
Dominique Martinet d9a3c66942 rootston/output: fix leak in damage_from_surface 2018-03-22 21:25:41 +01:00
emersion 3581573bdc
render/gles2: make wlr_renderer_begin take viewport size
This allows raw GL calls outside wlr_renderer to be removed.
2018-03-21 07:37:09 +01:00
emersion c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h 2018-03-19 23:16:29 +01:00
Dominique Martinet a491f780b8 rootston rotation: change view->rotation sign
The convetion with wlr_matrix changed and it's a good time to remove
all these pesky minus signs
2018-03-18 09:19:09 +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 303883ce49
rootston: properly emit view unmap event 2018-03-15 21:47:20 +01:00
emersion e607d0f7ee
xdg-shell: add map/unmap support 2018-03-15 20:15:09 +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
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
emersion dd8a7a29e1
rootston: don't center view if maximized 2018-03-14 00:01:28 +01: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 e74ddaaf10
xdg-shell-v6: redesign the configure/ack_configure workflow 2018-03-13 19:57:21 +01:00
emersion 125138f1a0
rootston: unmap view after emitting destroy signal in view_destroy 2018-03-13 12:34:29 +01:00
emersion c1c88bfe5d
rootston: destroy seat view on unmap 2018-03-13 12:31:45 +01:00
emersion 42637a52cf
rootston: don't segfault when getting size of an unmapped xdg-shell view 2018-03-12 10:42:41 +01:00
emersion 6ac3534df6
rootston: add destroy to view interface 2018-03-12 09:17:06 +01:00
emersion 1f8854f217
rootston: remove xdg-shell-v6 map/unmap listeners on destroy 2018-03-12 09:00:59 +01:00
emersion 9d6e17fb11
rootston: fix segfault in handle_tablet_tool_destroy 2018-03-11 11:58:59 +01:00
emersion 3f072bedd9
xdg-shell-v6: add map signal 2018-03-10 11:18:50 +01:00
Cedric Sodhi ebdabc2030 Make X11 fully optional
Make X11 Backend (in addition to XWayland) optional and small bug fix on XWayland includes.
2018-03-09 15:17:15 +01:00
emersion c27fd1e1ee
rootston: add view_map and view_unmap 2018-03-09 10:29:22 +01:00
Markus Ongyerth 14bb550bff set alpha to 1.0 for drag icons 2018-02-27 18:18:39 +01:00
Markus Ongyerth 333110515e set fullscreen alpha to 1 2018-02-27 10:55:05 +01:00
emersion c2ba1869ce
Merge pull request #670 from Ongy/xwayland_unmanaged
add xwayland unmanaged tests to support dmenu
2018-02-27 09:47:23 +01:00
Markus Ongyerth bb676013ed add xwayland unmanaged tests to support dmenu
This adds `wlr_xwayland_surface_is_unamanged`, to allow compositors more
fine grained control over XWayland focus.
A surface that is unmanaged should not receive focus, while other
windows that are just override redirect may want it (dmenu).
The way unamanged is determined is taken from wlc.
2018-02-26 12:02:49 +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 202a728ee9 rootstion: handle alpha in server side decorations 2018-02-25 16:53:36 +01:00
Guido Günther 9864f1c136 rootston: wire up window alpha keybinding 2018-02-25 16:53:36 +01:00
Guido Günther e2ea1ebe48 rootston: Add alpha channel to views 2018-02-25 16:53:36 +01: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
Guido Günther e6ca78b0e4 rootston: add view_create
so we can do basic view setup. Will be used to initialize alpha.
2018-02-25 13:47:43 +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
emersion 69409ea3cb
Merge pull request #654 from emersion/send-frame-done
rootston: send frame done events unconditionally
2018-02-23 18:55:18 +01:00
emersion ca3a947864
rootston: fix user-after-free in output_handle_destroy 2018-02-23 10:29:18 +01:00
emersion 5dba27216c
rootston: fix use-after-free in handle_keyboard_destroy 2018-02-23 10:24:28 +01:00
emersion 00e647e161
rootston: fix sending frame done to undefined view 2018-02-20 16:32:29 +01:00
emersion dc77b4c8c6
rootston: don't send frame done if wlr_output manages the surface 2018-02-20 16:17:23 +01:00
emersion 6f8eca2b3a
rootston: send frame done events unconditionally 2018-02-20 15:33:48 +01: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 7d26a6debd xdg-shell stable: copy-pasta implementation 2018-02-14 12:52:30 +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 ec837e3c9e
Introduce wlr_output_damage 2018-02-11 12:49:30 +01:00
Dominique Martinet 5aee2afc7b rootston: allow scale < 1 as well
Since we support fractional scale, having scale=0.5 can make sense
(and, as far as I can tell, works fine)
2018-02-10 09:28:54 +01:00
emersion cdd55b5d19
Merge remote-tracking branch 'upstream/master' into output-damage 2018-02-09 14:50:26 +01:00
Vincent Vanlaer 74264d4f62 Rename roots_seat_cancel_transform 2018-02-08 13:13:33 +01:00
Vincent Vanlaer 84234b4311 Merge branch 'master' into cancel-grab 2018-02-08 13:07:39 +01:00
Drew DeVault 78dc0c7de1
Merge pull request #611 from DonOregano/fix-resize-freeze
Make pointer button release outside window still count down the button_count
2018-02-07 21:00:09 -05:00
Vincent Vanlaer 712665b83b Fix style error 2018-02-07 20:26:30 +01:00
Vincent Vanlaer 099c80e7d6 Fix jitter when quickly resizing windows
Surfaces and views get resized only on commit, therefore we may only
change the position of a window if there are no pending commits.
2018-02-07 18:36:08 +01:00
Lars Hagström b181f793c3 Make pointer button release outside window still count down the button_count.
When double-clicking a maximized window title, so that the windows size is restored and the mouse pointer ends up _outside_ the window it becomes impossible to move windows.
The reason is that the button_count variable is not counted down if the mouse button is released outside the window, so the button_count remains incremented even after the button is released.
This patch adds a call to wlr_seat_pointer_notify_button if the mouse button is released outside the window.
(I am a complete noob to wlroots, so be kind...)
2018-02-07 17:42:31 +01:00
Vincent Vanlaer 90eb50d9aa Merge roots_seat_cancel_* into one function 2018-02-06 22:55:56 +01:00
Vincent Vanlaer 147e5c0f8f Refactor roots_cursor_press_button
Removed the button_count check when resizing/moving/rotating ends,
since all buttons presses are now properly tracked.
2018-02-06 13:57:03 +01:00
Vincent Vanlaer 6567a35903 Update seat pointer on meta move/resize/rotate
This will send the button pressed event to the client. This shouldn't
be a problem since sebsequent pointer movements are not sent to the
client. Thus the client will not for example start selecting text when
it is being resized using the compositor keybindigns.
2018-02-06 12:53:51 +01:00
Vincent Vanlaer 7ae8800a63 Cancel rootston move/resize/rotate on escape press 2018-02-06 12:36:38 +01:00
Vincent Vanlaer 7e3bb39d49 Always notify seat on button press
When the cursor is not over a view, wlr_seat_pointer_notify_button is
not called. However, this function does the bookkeeping of the pointer
state with regards to the number of pressed buttons. Because this
function also sends updates to the focused view, it has been moved
down, after the focus has been updated.
2018-02-06 12:36:04 +01:00
Fabian Geiselhart ee6cbe2efd
Comments should talk about colons not semicolons 2018-02-04 15:26:12 +01:00
emersion 1cea73d2d8
rootston: fix rotated views damage tracking 2018-02-04 11:59:04 +01:00
emersion 1842487d61
rootston: fix crash when closing a fullscreened xwayland view 2018-02-03 16:43:31 +01:00
emersion 6ba36cc52f
rootston: do not rely on current view size when accumulating damage 2018-02-03 16:33:58 +01:00
emersion ddb1779f9f
render: make wlr_renderer_clear take a float[4] for the color 2018-02-03 09:32:02 +01:00
emersion 402587ed65
rootston: use output renderer 2018-02-03 09:25:35 +01:00
emersion 5aa642485d
rootston: do not render views fullscreened on other outputs 2018-02-02 20:39:15 +01:00
emersion 4d6e7f510e
rootston: fix artifacts when leaving fullscreen in a rotated view 2018-02-02 20:34:46 +01:00
emersion a7cba7d83f
rootston: damage whole output when entering/leaving fullscreen 2018-01-30 14:40:22 +01:00