Commit graph

524 commits

Author SHA1 Message Date
emersion
876f07e9f1
renderer: replace wlr_texture_get_matrix by wlr_render_texture 2018-03-15 19:31:02 +01:00
emersion
824a95ad19
matrix: use 2D matrices 2018-03-15 15:33:58 +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
efa9eeb5d5
Merge pull request #716 from emersion/fix-cursor-hotspot-update
Fix cursor hotspot update
2018-03-12 21:50:07 -04:00
emersion
d24f868bbe
backend/drm: fix cursor hotspot not updated 2018-03-12 19:34:43 +01:00
emersion
7cdad5cde4
Merge pull request #710 from emersion/dont-move-hidden-cursors
output: don't move hidden cursors
2018-03-12 14:25:20 +01:00
emersion
92ca4ad474
backend/drm: refactor wlr_drm_connector_set_cursor 2018-03-11 11:40:03 +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
Drew DeVault
bfc0e95d2c Add mode support to libinput backend
And extend tablet example with tilt and ring support
2018-03-07 20:57:55 -05:00
Scott Anderson
3c9fc7c68e Add const to x11 and input interfaces 2018-03-06 21:16:18 +13:00
Scott Anderson
902d6cc240 Use xcb atoms properly 2018-03-06 21:15:47 +13:00
Markus Ongyerth
2cea430488 prevent current_mode null on output_enable(false)
The current mode was set to NULL to abuse it as state variable
persisting DRM suspend/resume, this results resulted in a segfault on
normal DPMS cycle.

This reverts that change and uses the wlr_output enabled variable, which
also persists and makes more sense.
2018-03-01 15:48:25 +01:00
Markus Ongyerth
a65ef8ea86 restore dpms state on drm resume
If there is no current mode, set outputs to dpms off in drm resume.
Sets current mode to null on disable to ensure this can be checked.
2018-02-26 18:12:51 +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
Drew DeVault
7da653bbb4
Merge pull request #669 from acrisci/headless-output-frame-timer
destroy frame timer in headless output
2018-02-25 00:26:32 -05:00
Tony Crisci
721e4ec55f remove frame timer from headless output 2018-02-24 22:32:57 -05:00
Dan Robertson
99e6cba3c3
Fix null deref in wlr_libinput_backend_destroy
If input_event is null (e.g. if backend_start has not been called yet)
wl_event_source_remove will result in a null deref.
2018-02-25 02:26:56 +00:00
Tony Crisci
94d53d53f9
Merge pull request #657 from emersion/wl-backend-uninitialized-field
backend/wayland: fix uninitialized wlr_event_keyboard_key::update_state
2018-02-24 10:14:22 -05:00
Guido Günther
9716aa9b92 x11: parse vendor and model out of xcb setup information 2018-02-23 09:52:56 +01:00
emersion
11e5f0bac8
backend/wayland: fix uninitialized wlr_event_keyboard_key::update_state 2018-02-23 09:40:31 +01:00
Drew DeVault
1d9be89e2d
Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
Drew DeVault
868ad5af69
Merge pull request #647 from ascent12/elf_visibility
ELF Visibility
2018-02-18 21:49:23 -05:00
Scott Anderson
86269052eb Explicitly export EFL symbols 2018-02-19 14:26:40 +13:00
Guido Günther
15afef6cbc x11 backend: set window title
This makes windows identifiable in the window list
2018-02-18 23:42:04 +01:00
Scott Anderson
f27c0b44b8 Remove usec_to_msec from public API 2018-02-19 10:43:25 +13:00
Rodrigo Lourenço
168e26489a Add missing dependencies 2018-02-14 18:42:39 +00: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
Drew DeVault
664d7bfe4e
Merge pull request #618 from VincentVanlaer/atomic-gamma
Add atomic gamma control
2018-02-10 09:51:09 -05:00
Drew DeVault
8fc7edd636
Merge pull request #623 from martinetd/mesonopt
Meson option enhancements
2018-02-10 09:49:13 -05:00
Dominique Martinet
435aec0033 meson build: only link with deps when required by options 2018-02-10 11:30:47 +01:00
Dominique Martinet
19d7edb430 meson.build status: print actual build options in message
We were printing the option intent (true by default for all), but
some are disabled when a component is not found and this was not
reflected.
2018-02-10 10:44:42 +01:00
Vincent Vanlaer
7cb828ac70 Fallback gamma on legacy if properties don't exist 2018-02-10 10:24:49 +01:00
emersion
bf6d245400
Swap buffers with damage 2018-02-09 22:54:14 +01:00
Vincent Vanlaer
dd69d7b764 Use VLA instead of heap alloc 2018-02-09 19:37:01 +01:00
Vincent Vanlaer
0232269a2d Fix style 2018-02-09 19:35:44 +01:00
Vincent Vanlaer
b2f6941617 Free gamma when property blob creation fails 2018-02-09 18:54:56 +01:00
Vincent Vanlaer
2df97ed16a Set needs_swap on output when gamma changes 2018-02-09 17:29:14 +01:00
Vincent Vanlaer
f5e5d1983b Do not allow gamma control without a crtc 2018-02-09 17:29:14 +01:00
Vincent Vanlaer
ab011406ad Add atomic gamma lut size fetching
Legacy gamma lut size now uses the new legacy_crtc member of
wlr_drm_crtc. This was Previously doen using old_crtc in
wlr_drm_connector, but since this refers to the crtc that was connected to
the ouput, this could give the wrong result.
2018-02-09 17:29:14 +01:00
Vincent Vanlaer
cc1229e75e Add atomic gamma setting 2018-02-09 17:29:04 +01:00
emersion
cdd55b5d19
Merge remote-tracking branch 'upstream/master' into output-damage 2018-02-09 14:50:26 +01:00
Markus Ongyerth
08fda567d2 prevents reuse of outdated wlr_output state
On the drm output the wlr_drm_connector structs are reused.
This struct contains the wlr_output struct, which is reused as well.
The old code kept modes/edid and output state persistent over hotplug.
This nulls the relevant strings, reads newer edid data and removes old
modes on unplug.
2018-02-06 22:45:37 +01:00
emersion
3d3ea32137
Merge remote-tracking branch 'upstream/master' into output-damage 2018-02-03 00:15:44 +01:00
emersion
bb39277e97
backend/drm: update output enabled property on modeset 2018-02-02 22:28:08 +01:00
emersion
bb4aeb3b2f
backend/drm: support updating cursor when session is paused 2018-02-02 21:01:59 +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
Guido Günther
c5aac77692 Fix some typos
Prefer initialize over initialise since used more often in the sources.
2018-01-30 16:10:07 +01:00
emersion
704130cc11
output: fix performance issues with wlr_output_schedule_frame 2018-01-30 14:45:02 +01:00
emersion
f152fdb4c5
Merge pull request #594 from Ongy/drm-surface-buffers
relases gbm buffers on init
2018-01-30 11:04:01 +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
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
Markus Ongyerth
cde0f454b3 Clean up the gbm/egl as well 2018-01-29 11:49:31 +01:00
Markus Ongyerth
2cdb646531 relases gbm buffers on init
The wlr_drm_surface_init function is called (upon others) when the drm
mode is changed.
When the surface was used previously this replaced the gbm_surface, but
did not replace the gbm buffers (front/back).
With this, wlr_drm_surface_get_from never set up the new buffers with
the new glViewport because surf->front existed.

This frees the buffers to get new buffers on the new surface with the
new viewport.
2018-01-29 11:29:54 +01:00
emersion
b47e8c4a1d
backend/drm: do not retry pageflip when swapping buffers 2018-01-28 23:33:38 +01:00
emersion
20e6861021
Do not flush damage if swapping buffers failed
This should solve issues with multiple outputs on DRM backend.
2018-01-28 22:39:24 +01:00
emersion
1ee61dbd0f
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-28 21:22:50 +01:00
Patrick Steinhardt
41ec686693 meson: add systemd/elogind backends only if enabled
Right now, we are adding systemd and elogind backends to the build
system as soon as their libraries are found on the build system.
Instead, we should only add them if the libraries have been found _and_
the user has actually requested them to be included.
2018-01-28 16:14:38 +00:00
Guido Günther
d7dfbd23fa drm: Use ptrdiff_t instead of intmax_t in format string
since we're looking at pointer differences.

Otherwise the build fails on arm like

In file included from ../backend/drm/drm.c:19:0:
../include/wlr/util/log.h:34:17: error: format '%jd' expects argument of type 'intmax_t', but argument 7 has type 'int' [-Werror=format=]
  _wlr_log(verb, "[%s:%d] " fmt, _strip_path(__FILE__), __LINE__, ##__VA_ARGS__)
                 ^
../backend/drm/drm.c:462:2: note: in expansion of macro 'wlr_log'
  wlr_log(L_DEBUG, "%s: crtc=%ju ovr=%jd pri=%jd cur=%jd", conn->output.name,
  ^~~~~~~
../backend/drm/drm.c:462:39: note: format string is defined here
  wlr_log(L_DEBUG, "%s: crtc=%ju ovr=%jd pri=%jd cur=%jd", conn->output.name,
                                     ~~^
                                     %d
2018-01-27 12:29:56 +01:00
emersion
7adf13e284
Fix flickering when switching VT 2018-01-27 11:16:42 +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
Vincent Vanlaer
72507f9820 Clean up session signal handler on drm init fail 2018-01-24 18:27:53 +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
emersion
59c53e8333
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-21 22:18:06 +01:00
Timidger
f8b9f44ff5
Add con/crtc null check to move_cursor in drm 2018-01-21 15:47:02 -05:00
Timidger
9d4ea146b6
Added crtc null check for other drm funcs 2018-01-21 15:37:23 -05:00
Timidger
4478cf1ddc
Fixes #575 2018-01-21 14:57:24 -05:00
Johannes Schramm
e37ebf6869 style: add comment to empty while loop in logind.c 2018-01-21 17:00:15 +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
0365b587f0
output: add damage tracking via buffer age 2018-01-21 00:06:35 +01:00
emersion
78c13ead16
backend/x11: force rendering the whole output 2018-01-20 18:10:11 +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
584f06ad2f
backend/drm: do not try a pageflip is another one is in pending 2018-01-19 23:46:40 +01:00
emersion
f0f97280a0
backend/drm: fix retry pageflip 2018-01-19 23:35:23 +01:00
emersion
bde255933e
output: add wlr_output::damage, fixes #572 2018-01-18 19:47:21 +01:00
emersion
6fa0a91ee2
backend/wayland: fix segfault in wlr_wl_output_destroy 2018-01-18 13:06:57 +01: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
Guido Günther
3101c300b1 Don't crash if crtc->cursor is NULL
Same as what atomic_crtc_set_cursor does

 Core was generated by `_build/rootston/rootston'.
 Program terminated with signal SIGSEGV, Segmentation fault.
 0  0xb6f28a1c in atomic_crtc_move_cursor (drm=0x1ebc8e8, crtc=0x1ead498, x=0, y=0) at ../backend/drm/atomic.c:170
 170		if (!crtc || !crtc->cursor) {
 (gdb) bt
 0  0xb6f28a1c in atomic_crtc_move_cursor (drm=0x1ebc8e8, crtc=0x1ead498, x=0, y=0) at ../backend/drm/atomic.c:170
 1  0xb6f2a856 in wlr_drm_connector_move_cursor (output=0x2242b28, x=0, y=0) at ../backend/drm/drm.c:634
 2  0xb6f3cea0 in wlr_output_cursor_set_image (cursor=0x21a0338, pixels=0x22e1290 "", stride=24, width=24, height=24, hotspot_x=4, hotspot_y=4) at ../types/wlr_output.c:516
 3  0xb6f39da2 in wlr_cursor_set_image (cur=0x22cfc90, pixels=0x22e1290 "", stride=24, width=24, height=24, hotspot_x=4, hotspot_y=4, scale=1) at ../types/wlr_cursor.c:310
 4  0xb6f44d2a in wlr_xcursor_manager_set_cursor_image (manager=0x22cfd10, name=0x434420 "left_ptr", cursor=0x22cfc90) at ../types/wlr_xcursor_manager.c:80
 5  0x00431c0a in roots_seat_configure_xcursor (seat=0x22cef08) at ../rootston/seat.c:515
 6  0x0043137c in roots_seat_init_cursor (seat=0x22cef08) at ../rootston/seat.c:210
 7  0x004315ec in roots_seat_create (input=0x218d220, name=0x434594 "seat0") at ../rootston/seat.c:289
 8  0x0042ecba in input_get_seat (input=0x218d220, name=0x434594 "seat0") at ../rootston/input.c:39
 9  0x0042ed04 in input_add_notify (listener=0x218d228, data=0x218d3b0) at ../rootston/input.c:54
 10 0xb6f2f2e6 in wl_signal_emit (signal=0x1ea548c, data=0x218d3b0) at /usr/include/wayland-server-core.h:387
 11 0xb6f2f572 in input_add_reemit (listener=0x1ea9990, data=0x218d3b0) at ../backend/multi/backend.c:101
 12 0xb6f2db7e in wl_signal_emit (signal=0x1ea992c, data=0x218d3b0) at /usr/include/wayland-server-core.h:387
 13 0xb6f2ddaa in handle_device_added (backend=0x1ea9920, libinput_dev=0x2292598) at ../backend/libinput/events.c:87
 14 0xb6f2e164 in wlr_libinput_event (backend=0x1ea9920, event=0x2292b78) at ../backend/libinput/events.c:198
 15 0xb6f2d678 in wlr_libinput_readable (fd=23, mask=1, _backend=0x1ea9920) at ../backend/libinput/backend.c:28
 16 0xb6f2d7c0 in wlr_libinput_backend_start (_backend=0x1ea9920) at ../backend/libinput/backend.c:74
 17 0xb6f27170 in wlr_backend_start (backend=0x1ea9920) at ../backend/backend.c:30
 18 0xb6f2f320 in multi_backend_start (wlr_backend=0x1ea5480) at ../backend/multi/backend.c:22
 19 0xb6f27170 in wlr_backend_start (backend=0x1ea5480) at ../backend/backend.c:30
 20 0x0042fbc6 in main (argc=1, argv=0xbe89dd04) at ../rootston/main.c:60
2018-01-15 13:37:53 +01:00
Markus Ongyerth
c00e9d1416 adds remote argument to wayland backend create
Add a remote display name argument to wlr_wl_backend_create.
If NULL is passed to the wayland backend at all times, creating a
wayland backend *after* the compositor was started up, would require
changing the WAYLAND_DISPLAY environment variable.
2018-01-13 21:20:15 +01:00
emersion
53ba9b4eec
Fix output enable in DRM backend 2018-01-07 00:28:21 +01:00
emersion
771263380c
Add wlr_output::enabled 2018-01-04 12:46:15 +01:00
PoroCYon
7574e27c6a fix build without systemd 2018-01-02 16:39:58 +01:00
Timidger
1478ef3202
Remove display_destroy on multi-backend destroy 2017-12-28 10:54:30 -06:00
Drew DeVault
bb24895a2b
Merge pull request #533 from martinetd/wl_array_add
ENOMEM checks: consistently check wl_array_add return
2017-12-28 07:44:21 -08:00
Dominique Martinet
8e24aaa3c6 style: fix sizeof() calls without parentheses 2017-12-28 16:28:19 +01:00
emersion
1e6566e6cd
Fixes for multiple outputs
* Fixes output positions in screenshots
* Fixes Wayland backend pointer events when output layout doesn't start at (0, 0)
2017-12-28 15:09:57 +01:00
Björn Esser
ff13849624
config: Avoid clash with other config-headers 2017-12-27 17:13:58 +01:00
Tony Crisci
6c2242e66b
Merge pull request #522 from emersion/fix-drm-output-transform-cursor
Fix cursor on transformed output with DRM backend
2017-12-27 05:48:45 -05:00
Björn Esser
57a09c8ca4
config: Put all defines into config.h 2017-12-26 18:51:27 +01:00
emersion
e737f65e38
Fix cursor on transformed output with DRM backend 2017-12-26 18:16:37 +01:00
Michael Weiss
e457967e3f Add libdrm as a dependency of wlr_backend
Without this patch I'm getting the following build error when building
with Nix:

FAILED: backend/wlr_backend@sta/session_direct-ipc.c.o
In file included from ../backend/session/direct-ipc.c:20:0:
/nix/store/9ac27wk5vh47p28gladbdfafpidrx9rh-libdrm-2.4.88-dev/include/xf86drm.h:40:17: fatal error: drm.h: No such file or directory
 #include <drm.h>
                 ^
compilation terminated.
2017-12-23 22:49:41 +01:00
Tony Crisci
4cec7f54e2 only add first backend to multi autocreate 2017-12-21 18:38:58 -05:00
Tony Crisci
b4159c52d5 autocreate backend returns null instead of empty 2017-12-21 08:33:34 -05:00