Commit graph

388 commits

Author SHA1 Message Date
Drew DeVault
21f5b92973 Add super+click to move windows around without xdg
Though it still doesn't work for non-XDG windows because we need to
build common window state managemnet within the reference compositor.
2017-09-22 09:34:52 -04:00
Drew DeVault
800a1ec679 Use time_usec for event serials
Fixes #151
2017-09-22 09:24:07 -04:00
Drew DeVault
7ae5268679 Implement xdg request_move in reference compositor 2017-09-22 09:19:27 -04:00
Drew DeVault
d558745633 Handle tablet motion in example compositor 2017-09-21 18:51:33 -04:00
Tony Crisci
446adda1a3 compositor.c: implement cursor motion absolute 2017-09-21 17:51:31 -04:00
Tony Crisci
91323a9b9b compositor.c: add guards for unconfigured surfaces 2017-09-21 14:05:14 -04:00
Tony Crisci
675a71dce7 compositor.c: determine xdg position by window geom 2017-09-21 13:48:46 -04:00
Tony Crisci
7a3edf6e62 use double for cursor coordinates 2017-09-21 11:38:04 -04:00
Tony Crisci
8b74450b39 wlr_seat: pointer events 2017-09-20 19:43:49 -04:00
Tony Crisci
b01909ae15 compositor.c: xdg-surface layout position
Add data structures to compositor.c xdg-surface implementation that allows them
to be rendered in the correct position in the layout, spanning outputs if
necessary.
2017-09-19 14:47:28 -04:00
Tony Crisci
94f4f1878d xdg-surface-v6: implement ping 2017-09-16 12:35:49 -04:00
Tony Crisci
c912de6390 compositor.c: implement xdg-toplevel-v6 request events 2017-09-16 09:23:05 -04:00
Tony Crisci
27161a673f xdg-shell new surface and ack configure events 2017-09-15 08:53:08 -04:00
Tony Crisci
9d2dc8447a use wlr_surface on shell struct and listen to events 2017-09-13 07:57:16 -04:00
Tony Crisci
31bd8e089b compositor.c: working pointer 2017-09-07 08:13:37 -04:00
Tony Crisci
9d9aaad020 compositor.c: fix formatting 2017-09-07 08:13:37 -04:00
emersion
1b588e7c1f
Add gamma_control skeleton 2017-09-06 14:48:27 +02:00
Drew DeVault
586ae674ae Merge pull request #136 from acrisci/bug/rename-output-layout-create
Rename wlr_output_layout_init()
2017-09-06 08:29:55 +09:00
Tony Crisci
e733b0e643 Rename wlr_output_layout_init()
Rename wlr_output_layout_init() to wlr_output_layout_create() to be consistent
with the rest of the api.
2017-09-05 17:53:29 -04:00
Tony Crisci
500bcc49c4 move device configuration to config.h 2017-09-05 17:18:37 -04:00
Tony Crisci
0cdd7fac02 pointer.c: refactor device configuration 2017-09-05 08:24:53 -04:00
Tony Crisci
6904ed8bd9 bugfix: warp cursor to current position on output add 2017-09-05 07:52:17 -04:00
Tony Crisci
6d26fda57c use monotonic clock time for animations 2017-08-31 23:43:02 -04:00
Tony Crisci
35eee80f9b remove unused outputs list in output-layout.c 2017-08-31 07:47:44 -04:00
Tony Crisci
fa3d4ecc84 fix layout hotplugging issue in output-layout.c 2017-08-31 07:47:44 -04:00
Tony Crisci
f8e4ba3f5f cleanup output-layout example 2017-08-31 07:47:44 -04:00
Tony Crisci
40bd6bcc43 implement output layout auto configuration 2017-08-31 07:47:44 -04:00
Tony Crisci
368f74e4df Refactor meson build files
Use tabs for indentation and break up function calls over 80 col.
2017-08-30 14:30:47 -04:00
Tony Crisci
6699024b44 handle empty config file 2017-08-29 12:43:33 -04:00
Tony Crisci
9b65d0b3f0 refactor and rename wlr_geometry to wlr_box 2017-08-29 12:36:39 -04:00
Tony Crisci
a51b76083e rename wlr_cursor_init to wlr_cursor_create 2017-08-29 12:36:39 -04:00
Tony Crisci
34f4a7b972 pointer.c: fix formatting 2017-08-29 12:36:39 -04:00
Tony Crisci
1193dd564b config fixes 2017-08-29 12:36:36 -04:00
Drew DeVault
30611894f2 Implement tablet_tool support in pointer example 2017-08-28 22:12:35 -04:00
Tony Crisci
4fbe322fa6 fix memory errors 2017-08-28 11:07:54 -04:00
Tony Crisci
5c845f14ed handle input device destroy 2017-08-28 10:29:53 -04:00
Tony Crisci
df0ee7f25f implement tablet tool devices 2017-08-28 10:23:14 -04:00
Tony Crisci
5e06d61e42 implement touch up and touch down 2017-08-27 17:35:12 -04:00
Tony Crisci
ed126b0881 add touch events 2017-08-27 11:34:25 -04:00
Tony Crisci
dc7e32552d config: fix uninitialized variables and accept trailing for geom 2017-08-26 11:53:16 -04:00
Tony Crisci
0a97b68278 implement cursor and device geometry mapping 2017-08-26 08:32:11 -04:00
Tony Crisci
d0cf8d0d01 add device configuration 2017-08-26 08:32:11 -04:00
Tony Crisci
699d489f93 add cursor configuration 2017-08-26 08:32:11 -04:00
Tony Crisci
b3a43e2261 add configuration file 2017-08-26 08:32:11 -04:00
Tony Crisci
54f87146c3 refactor example config and add ini.c 2017-08-26 08:32:11 -04:00
Tony Crisci
98f4cdfccb implement wlr_cursor_map_input_to_output 2017-08-26 08:32:11 -04:00
Tony Crisci
a4810203cc change output layout coords to double type 2017-08-26 08:32:11 -04:00
Tony Crisci
e3d47376dc add wlr_cursor basic implementation 2017-08-26 08:32:11 -04:00
Dominique Martinet
1458a95e65 example compositor: loop through xwayland surfaces 2017-08-23 22:03:49 +02:00
Dominique Martinet
eb5b9cc6da xwayland: move & split internal header file 2017-08-23 22:03:49 +02:00
Dominique Martinet
b2bab1af5c xwayland: split xwm structure out, initial xwm.c 2017-08-23 22:03:49 +02:00
Dominique Martinet
60451521bd start xwayland in example compositor 2017-08-23 22:03:49 +02:00
Dominique Martinet
2948f53721 example compositor: handle keyboard after we're done with init
the libinput backend does wl_display roundtrips, during which there is a
small window where keystrokes can be handled before the rest of the example
compositor is ready.
Setting the callback later ensures we're not called at this point
2017-08-20 14:19:30 +02:00
Dominique Martinet
1ca08dc4cb wlr_compositor: change _init/finish to _create/destroy 2017-08-19 23:17:39 +02:00
Dominique Martinet
4110788159 move wl_compositor into wlroots as wlr_compositor 2017-08-19 21:56:51 +02:00
Dominique Martinet
5885679e33 examples: separate compositor_fini from run
compositor_fini destroys the display, but it is an error to destroy it
before e.g. wlr_seat that references it.
This lets us order destroy calls properly, following first-in-last-out
logic.
2017-08-19 09:31:06 +02:00
Dominique Martinet
f24b3df980 wlr renderer/texture: rename init to create when it does alloc 2017-08-19 08:33:31 +02:00
Tony Crisci
f03be94309 rename wlr_cursor to wlr_xcursor
This is for the implementation of another type that should be called wlr_cursor.
2017-08-18 19:48:55 -04:00
Tony Crisci
e3edb08126 bring output configuration into shared.h 2017-08-18 19:31:16 -04:00
Tony Crisci
769549c652 Refactor example output config
Put all the config parsing into shared.h so it is shared among the examples.
2017-08-18 17:44:10 -04:00
nyorain
f2a9098691 Fix wlr_data_device_manager 2017-08-18 19:58:36 +02:00
nyorain
86314caa5b Implement wlr_data_{source,device,device_manager} 2017-08-18 18:56:21 +02:00
Drew DeVault
3138c5ddf0 Clean up wlr_output_layout 2017-08-17 21:06:28 -04:00
Tony Crisci
854a9381ca improve collision detection algorithm 2017-08-17 21:05:13 -04:00
Tony Crisci
59a71f59b9 reconfigure output on resolution change 2017-08-17 21:05:13 -04:00
Tony Crisci
e0b409760d fix output resolution callback 2017-08-17 21:05:13 -04:00
Tony Crisci
128f06405b vt change bugfix 2017-08-17 21:05:13 -04:00
Tony Crisci
d9ebf0615a add output resolution notify to example shared 2017-08-17 21:05:13 -04:00
Tony Crisci
5a9baf487e add helper methods for intersection 2017-08-17 21:05:13 -04:00
Tony Crisci
dfb6a12036 layout-output example: only render if its on the output 2017-08-17 21:05:13 -04:00
Tony Crisci
2e9e237f9d layout-output example: handle empty config 2017-08-17 21:05:13 -04:00
Tony Crisci
44181b57ac Add wlr_output_layout implementation
An output layout consists of a mapping of outputs to their position in a global
coordinate system that usually cooresponds to the output position in physical
space in front of the user.

Add an example that allows configuration of an output layout and demonstrates
its boundaries with a bouncing image.
2017-08-17 21:05:13 -04:00
nyorain
edbaa7d6ac Update keyboard modifiers in example compositor 2017-08-17 14:34:31 +02:00
nyorain
ad22b4874d Fix wlr_seat; add to example compositor 2017-08-17 13:06:53 +02:00
Calvin Lee
901c14c409 Prevent alloc errors from crashing in list_t
This commit changes the `list_t` api so that alloc errors can be
detected and worked around. Also fixes errors not found in 5cc7342
2017-08-16 09:23:21 +02:00
Drew DeVault
19d6442f52 Merge pull request #91 from martinetd/move_wl_shell
Move wl_shell into wlroots
2017-08-15 17:39:18 -04:00
Drew DeVault
27c13d621d Merge pull request #88 from 4e554c4c/alloc_crashing
Prevent alloc errors from crashing
2017-08-15 12:21:58 -04:00
Dominique Martinet
f9b55dfa95 Make wlr_wl_shell_create work like xdg
Also:
- rename wlr_xdg_shell_v6_init to create as that is what it does
- free wlr_xdg_shell on failure to create wl_global, the struct
is not initialized enough to call destroy at that point
2017-08-15 15:36:02 +02:00
Dominique Martinet
d49edc8243 wl_shell/compositor surface: do not check if it's in list before removing 2017-08-15 15:34:26 +02:00
Dominique Martinet
5dae8e1be8 example compositor: only iterate over wl_shell and xdg_shell surfaces 2017-08-15 15:34:26 +02:00
Dominique Martinet
f4e6b138fb Move wl_shell into wlroots 2017-08-15 15:13:23 +02:00
Drew DeVault
f60b53c6e3 Change how surface matricies are calculated 2017-08-15 08:52:30 -04:00
Tony Crisci
e46ec57b43 implement surface sizing 2017-08-15 07:36:51 -04:00
Calvin Lee
5cc7342606 Prevent alloc errors from crashing
Resolves #76
2017-08-15 08:04:57 +02:00
Drew DeVault
4386816889 wlr_backend_init -> wlr_backend_start
Also renames create to init. We'll use create for anything that
allocates and init for anything that takes a pointer and initializes it.
2017-08-13 10:19:57 -04:00
Drew DeVault
d4b4bfb8bc Fix #64 2017-08-13 08:26:32 -04:00
Dominique Martinet
de86965174 Use libinput_event_destroy/xkb_*_unref
Also sneak in a missing drmModeFreePlaneResources
2017-08-12 00:11:18 +02:00
Dominique Martinet
be3a0ad065 libinput backend: fill in handle_device_removed
And fix input_remove_notify accordingly
2017-08-12 00:11:18 +02:00
Dominique Martinet
1c7dd71208 WIP: example/shared.c free
Still missing something, the _remove functions are never called
2017-08-11 19:41:10 +02:00
Drew DeVault
62d8b252c0 Refactor meson and move xdg-shell into wlroots 2017-08-11 09:37:09 -04:00
Drew DeVault
3375381610 Fix segfault during xdg-shell cleanup 2017-08-10 22:24:24 -04:00
Drew DeVault
c24351681f Refactor EGL handling 2017-08-10 22:15:37 -04:00
Drew DeVault
7095274a9e Merge branch 'master' into drm_buffer 2017-08-10 13:19:39 -04:00
Drew DeVault
7da43ff8b0 Implement wlr_surface_flush_damage 2017-08-10 08:26:16 -04:00
nyorain
31d78ff497 Fix wlr_surface destruction bug 2017-08-10 12:42:35 +02:00
Tony Crisci
14654ecb77 implement compositor create region
Complete the implementation of wlr_region_create and put it in the compositor.
2017-08-10 05:59:43 -04:00
nyorain
1901c3e1b6 Fix example for updated gles 2017-08-10 11:03:58 +02:00
nyorain
67369173aa Implement drm (egl) buffer attaching 2017-08-10 10:59:58 +02:00
Tony Crisci
8306f46dfb implement surface frame
The surface frame callback lets a window know when it is a good time to show the
next frame if it is animating. In particular, this callback is used by
weston-simple-shm to throttle drawing.
2017-08-09 17:31:38 -04:00
Drew DeVault
bd2e9a7168 Style cleanup 2017-08-09 17:30:22 -04:00
Tony Crisci
5a7595af77 use generators for wayland protocol gen 2017-08-09 16:50:41 -04:00
Tony Crisci
26edd5fb9e cleanup for style and formatting 2017-08-09 16:50:40 -04:00
Tony Crisci
816a7f8257 add xdg shell destructors 2017-08-09 16:50:07 -04:00
Tony Crisci
bdfe9faf58 Add todo for destroy_xdg_shell_surface
This free was causing crashes so remove the implementation and make a note to
do it later.
2017-08-09 12:31:16 -04:00
Tony Crisci
a6c7d8d14f send configure event after creating toplevel
The xdg shell protocol requires us to send a configure in order for the client
to start attaching buffers.
2017-08-09 12:31:16 -04:00
Tony Crisci
5add87cac6 rename wlr_surface to wlr_texture 2017-08-09 12:31:16 -04:00
Tony Crisci
15885ab54a implement xdg toplevel stubs 2017-08-09 12:31:16 -04:00
Tony Crisci
c3f15ea284 Add xdg shell stubs 2017-08-09 12:31:16 -04:00
Tony Crisci
347707c962 Add shell surface stubs
Add stubs for the wl_shell_surface interface.

Implement wl_shell_get_shell_surface by creating the shell surface and settings
its implementation to these stubs.
2017-08-09 12:30:11 -04:00
nyorain
cf9ee6ce3f Move wlr_surface into wlr 2017-08-09 17:27:12 +02:00
nyorain
8473c3955c Add first wlr_surface example implementation 2017-08-09 17:26:05 +02:00
Drew DeVault
ba87585bbe Merge pull request #48 from nyorain/wlr_texture
Rename wlr_surface -> wlr_texture; attach -> upload
2017-08-08 13:12:16 -04:00
nyorain
e167f41fde Rename wlr_surface -> wlr_texture; attach -> upload 2017-08-08 18:25:16 +02:00
Drew DeVault
9383aaf89e Accomodate for hotspot in cursor position 2017-08-08 11:44:44 -04:00
Drew DeVault
7486263f7e Add xcursor sublibrary 2017-08-07 21:13:04 -04:00
Scott Anderson
2f8b5c4448 More cleanups 2017-08-06 15:53:41 +12:00
Drew DeVault
5bf61ca7ed Check for multi backend before using it 2017-08-05 23:08:35 -04:00
Scott Anderson
4d4da18437 Fixed VT switching 2017-08-06 13:37:49 +12:00
Scott Anderson
cb4d50e22c Changed header paths. 2017-08-06 13:25:26 +12:00
Scott Anderson
ae4478e17f Changed ownership of wlr_session to the multi backend.
Currently breaks VT switching for examples.
2017-08-06 13:25:26 +12:00
nyorain
fdab81e1c9 Use meson build system 2017-08-05 22:34:24 +02:00
Drew DeVault
7c393d5143 Missed a variable 2017-08-04 16:44:45 -04:00
Drew DeVault
95653c0bf7 Minor nitpicking in wl_compositor 2017-08-04 16:26:21 -04:00
Tony Crisci
effea557bb Implement destroying surfaces
Add a signal for wlr_surface destruction on the wlr_surface that compositors
can listen to to remove the surface from their state.

Implement a listener for this in the example wl_compositor to remove the
surface from its internal list of surfaces.

Destroy the surface in the compositor destroy_surface callback given when the
surface resource was created.

Add a reference to the surface resource to the wlr_surface so a compositor can
find it in its list of resources upon wlr_resource destruction.
2017-08-04 11:53:55 -04:00
Tony Crisci
6610aa7ca7 Implement shm buffer surface attach interface
Implement surface_attach method. This is called when a client attaches an shm
buffer with wl_surface_attach().

Implement the GLES2 interface for attaching shm buffers. This creates an opengl
texture with the shm buffer contents for the surface.

This commit also includes some working code to render the surfaces onto the
screen for demonstration purposes.
2017-08-04 11:41:13 -04:00
Tony Crisci
555914a13b Add surface interface stubs in compositor example
Add the wayland surface interface to the example compositor.

Implement the create_surface method to create a new wlr surface from the
wayland surface and add the interface.
2017-08-03 10:46:08 -04:00
Tony Crisci
aebe5ba48c Use correct pixel format enum in touch example
Fix a call to `wlr_surface_attach_pixels()` in the main method of the touch
example to use the correct enum for this method (wayland instead of gl).
2017-07-31 14:54:00 -04:00
Drew DeVault
b08aa9fd35 Revert "Merge pull request #27 from ascent12/meson"
This reverts commit 85805da021, reversing
changes made to 8189c64d7f.
2017-07-11 22:16:56 -04:00
Drew DeVault
7b9c330bc5 Revert "Fixed linking error"
This reverts commit c81324bd0b.
2017-07-11 22:16:52 -04:00
Scott Anderson
c81324bd0b Fixed linking error 2017-07-12 13:46:47 +12:00
Scott Anderson
e54b1eded4 Small linking fix 2017-07-11 12:24:43 +12:00
Scott Anderson
a2ba226ba3 Use subdir 2017-07-11 09:56:54 +12:00
Scott Anderson
924bf0f669 Changed build system to meson 2017-07-11 00:28:56 +12:00
Scott Anderson
8189c64d7f Fixed that warnings that showed up with optimisations. 2017-07-11 00:14:55 +12:00
Scott Anderson
ceef12cb5a Exit cleanly if we cannot open Wayland socket. 2017-07-10 13:46:15 +12:00
Drew DeVault
8920b5d607 Merge branch 'wlcore' 2017-06-29 16:00:24 -04:00
Drew DeVault
486ec5953c Add shim implementations of wl_{compositor,shell}
To example compositor
2017-06-28 18:51:58 -04:00
Drew DeVault
28736c5787 Move example -> examples
And the compositor example into its own directory
2017-06-28 18:23:49 -04:00