Commit Graph

3580 Commits

Author SHA1 Message Date
emersion f8a50e4fe7 backend/drm: steal CRTCs from disabled outputs
This commit allows outputs that need a CRTC to steal it from
user-disabled outputs. Note that in the case there are enough
CRTCs, disabled outputs don't loose it (so there's no modeset
and plane initialization needed after DPMS). CRTC allocation
still prefers to keep the old configuration, even if that means
allocating an extra CRTC to a disabled output.

CRTC reallocation now happen when enabling/disabling an output as
well as when trying to modeset. When enabling an output without a
CRTC, we realloc to try to steal a CRTC from a disabled output
(that doesn't really need the CRTC). When disabling an output, we
try to give our CRTC to an output that needs one. Modesetting is
similar to enabling.

A new DRM connector field has been added: `desired_enabled`.
Outputs without CRTCs get automatically disabled. This field keeps
track of the state desired by the user, allowing to automatically
re-enable outputs when a CRTC becomes free.

This required some changes to the allocation algorithm. Previously,
the algorithm tried to keep the previous configuration even if a
new configuration with a better score was possible (it only changed
configuration when the old one didn't work anymore). This is now
changed and the old configuration (still preferred) is only
retained without considering new possibilities when it's perfect
(all outputs have CRTCs).

User-disabled outputs now have `possible_crtcs` set to 0, meaning
they can only retain a previous CRTC (not acquire a new one). The
allocation algorithm has been updated to do not bump the score
when assigning a CRTC to a disabled output.
2018-09-15 08:37:33 +02:00
Drew DeVault df991a55ab
Merge pull request #1241 from emersion/output-enable-error-checking
output: make wlr_output_enable return a bool
2018-09-14 21:14:18 -04:00
Drew DeVault 0210905eef
Merge pull request #1243 from emersion/layer-shell-suffix
layer-shell: add _v1 suffix
2018-09-14 20:47:42 -04:00
Drew DeVault a088000983
Merge pull request #1244 from emersion/xdg-output-suffix
xdg-output: add _v1 suffix
2018-09-14 20:47:14 -04:00
Drew DeVault d549dc327e
Merge pull request #1240 from emersion/no-hardware-cursors
output: introduce WLR_NO_HARDWARE_CURSORS
2018-09-14 15:58:09 -04:00
emersion fc960e5d06 layer-shell: add _v1 suffix 2018-09-14 19:32:33 +02:00
emersion b3cb22c003 xdg-output: add _v1 suffix 2018-09-14 19:29:08 +02:00
emersion cb293f09e7 output: make wlr_output_enable return a bool 2018-09-14 18:18:07 +02:00
emersion 524702eb16 output: introduce WLR_NO_HARDWARE_CURSORS 2018-09-14 18:07:21 +02:00
emersion 769a8e9917
Merge pull request #1160 from Ongy/tablet-grabs
Tablet grabs
2018-09-12 19:01:50 +02:00
Drew DeVault b2112686df
Merge pull request #1239 from dcz-purism/layer_order_master
rootston: Keep older anchored layers near anchor points
2018-09-11 08:11:11 -04:00
Dorota Czaplejewicz e9e65c549a rootston: Keep older anchored layers near anchor points
Layer surfaces are attached to edges of the screen starting with the youngest, causing new ones to always displace existing ones. This changes the order to oldest first, keeping the positions more often.
2018-09-11 11:47:22 +02:00
Drew DeVault ca331c0468
Merge pull request #1235 from emersion/dealloc-unused-crtcs
backend/drm: de-allocate unused CRTCs
2018-09-10 21:51:36 -04:00
Drew DeVault 76ad4804bc
Merge pull request #1227 from emersion/rootston-segfault-tablet-destroy
rootston: fix segfault on tablet pad destroy
2018-09-10 21:11:32 -04:00
Drew DeVault 7ba50469e0
Merge pull request #1205 from sghctoma/fix-freebsd-direct-session
Add drmSetMaster and drmDropMaster calls to FreeBSD direct session
2018-09-10 21:11:22 -04:00
emersion 1fcecd68df backend/drm: de-allocate unused CRTCs
They can be re-used by another output after a subsequent hotplug.
2018-09-10 18:46:30 +02:00
emersion d8ca467211
Merge pull request #1234 from mntmn/master
fix cursor loss w/ legacy drm and software cursor (tested on etnaviv)
2018-09-10 18:45:07 +02:00
mntmn e1c91884fb fix cursor loss w/ legacy drm and software cursor (tested on etnaviv) 2018-09-10 17:30:26 +02:00
Markus Ongyerth 21e1cc9ab4 Implement feedback 2018-09-08 19:17:44 +02:00
emersion 0086dbed09
Merge pull request #1233 from nyorain/fix/xwayland_destroy
Fix wlr_xwayland_destroy
2018-09-08 13:26:44 +02:00
nyorain 195103700c Fix wlr_xwayland_destroy 2018-09-08 13:00:56 +02:00
sghctoma ba5df0d21d Fix build failure on non-FreeBSD systems
Accidentally included the FreeBSD-specific dev/evdev/input.h file on
other systems too. This commit fixes that.
2018-09-07 17:44:48 +02:00
sghctoma 7a5d3c4d3b Implement device type discovery using ioctl calls
This commit implements device type discovery by calling two ioctls
(DRM_IOCTL_VERSION and EVIOCGVERSION) on the device. These iocts are
specific to drm and input devices respectively, therefore we can
determine the device type based on which one returns an error.
2018-09-07 16:37:25 +02:00
sghctoma bbeed1bd31 Merge remote-tracking branch 'upstream/master' into fix-freebsd-direct-session 2018-09-07 15:45:20 +02:00
emersion 085142ba34
Merge pull request #1232 from nyorain/fix/dnd-offset
Fix #1129
2018-09-07 15:22:16 +02:00
nyorain f6168c2afe Fix #1129 and remove sx, sy from wlr_drag_icon
sx, sy used to store the buffer offset of the drag surface which was
then be added (by rootston) to the drag icon position.
Buffer offsets are handled already in surface_intersect_output
(output.c) so they were added twice for dnd surfaces.
2018-09-07 14:48:28 +02:00
Drew DeVault 8898f3199a
Merge pull request #1229 from emersion/drm-hotplug-fixes
backend/drm: better hotplug handling
2018-09-05 09:35:20 -04:00
Drew DeVault 04c39a0719
Merge pull request #1231 from ascent12/editorconfig
Remove indent_size from .editorconfig
2018-09-05 09:34:44 -04:00
Scott Anderson 2d29cebe5f Remove indent_size from .editorconfig
Some of us like to use different indent sizes.
2018-09-05 11:59:38 +12:00
emersion 8a6bdc193d backend/drm: damage outputs when switching CRTCs 2018-09-04 23:10:37 +02:00
emersion 1342393632 backend/drm: cosmetic enhancements 2018-09-04 23:08:45 +02:00
emersion 5b13b8a12c backend/drm: consider continue not using resources
Fixes #1230
2018-09-04 22:57:09 +02:00
emersion fb94f03b43 backend/drm: prevent use of uninitialized data 2018-09-04 22:50:59 +02:00
emersion d605b2ea07 backend/drm: remove unused if 2018-09-04 22:49:54 +02:00
emersion 017cfb0b86 backend/drm: log when de-allocating CRTC 2018-09-04 19:44:44 +02:00
emersion b877daded1 backend/drm: better hotplug handling
This commit handles better situations in which the number of
connected outputs is greater than the number of available CRTCs.
It'll enable as many outputs as possible, and transfer CRTCs to
outputs that need one on unplug.

This changes CRTC and plane reallocation to happen after scanning
DRM connectors instead of on modeset.

This cleanups CRTCs and planes on unplug to allow them to be
re-used for other outputs.

On modeset, if an output doesn't have a CRTC, the desired mode is
saved and used later when the output gains a CRTC.

Future work includes giving priority to enabled outputs over
disabled ones for CRTC allocation. This requires the compositor to
know about all outputs (even outputs without CRTCs) to properly
modeset outputs enabled in the compositor config file and disable
outputs disabled in the config file.
2018-09-04 15:09:07 +02:00
Drew DeVault 73423c988c
Merge pull request #1213 from arandomhuman/wlr_log_get_verbosity
Add wlr_log_get_verbosity method
2018-09-03 11:15:12 -04:00
random human 6daa69fbf5
Update wlr_log_init docs 2018-09-03 17:34:08 +05:30
random human cdf41fa627
Add support for setting log verbosity in rootston 2018-09-03 17:34:07 +05:30
random human 93382dc445
Close stdout/stderr for Xwayland
Depending on the log verbosity, close the stdout/stderr streams.
2018-09-03 17:33:48 +05:30
emersion d31a267f36
Merge pull request #1226 from RyanDwyer/xwayland-set-role
xwayland: Introduce set_role event
2018-09-03 09:23:47 +02:00
Ryan Dwyer b8cc4a4152 xwayland: Introduce set_role event 2018-09-03 17:07:14 +10:00
emersion d22431d969
Merge pull request #1228 from arandomhuman/misc-mem
Miscellaneous memory leak fixes
2018-09-03 08:26:59 +02:00
random human 9f511ae942
Remove listener link after tablet_manager destroy 2018-09-03 05:05:18 +05:30
random human 6af77e3d9e
Release pointers in examples/multi-pointer 2018-09-03 04:00:53 +05:30
random human de16defb21
Release registry pointer in examples/idle 2018-09-03 03:27:56 +05:30
random human ef5df78a27
Destroy layout after display in examples/output-layout 2018-09-03 03:27:28 +05:30
random human 568b0ffe2c
Call wl_global_create first in case of failure 2018-09-03 02:43:55 +05:30
random human 7105864e13
Handle setting keymap in examples more securely 2018-09-03 02:43:44 +05:30
emersion 62af1c630a rootston: fix segfault on tablet pad destroy 2018-09-02 21:40:03 +02:00