Commit Graph

126 Commits

Author SHA1 Message Date
Simon Ser
e8d56ca415 backend/session: allow wlr_session_find_gpus to return an error
Sometimes wlr_session_find_gpus will encounter an error. This is
different from finding zero GPUs.

On error, wlr_session_find_gpus already returns -1. However, this is
casted to size_t, so callers uncorrectly assume this is a success.

Instead, make wlr_session_find_gpus return a ssize_t and allow callers
to handle the error accordingly.
2021-01-04 19:46:44 +01:00
Simon Ser
4b03bdc3ab Remove wlr_create_renderer_func_t
This callback allowed compositors to customize the EGL config used by
the renderer. However with renderer v6 EGL configs aren't used anymore.
Instead, buffers are allocated via GBM and GL FBOs are rendered to. So
customizing the EGL config is a no-op.
2020-12-30 17:09:40 +01:00
Simon Ser
44a4792fd8 backend/session: operate on wlr_device
Instead of operating on FDs in {open,close}_device, operate on
wlr_devices. This avoids the device lookup in wlr_session and allows
callers to have access to wlr_device fields.

For now, we use it to remove wlr_session_signal_add and replace it with
a more idiomatic wlr_session.events.change field. In the future, other
events will be added.
2020-11-19 22:47:49 +01:00
Simon Ser
87836dcb55 backend: remove check for _WAYLAND_DISPLAY
I'm not sure what this was used for, but it's not used by libwayland.
Setting _WAYLAND_DISPLAY would result in the Wayland backend being
picked but would ignore the actual value of the env variable.
2020-09-16 15:53:14 -04:00
Drew DeVault
ebdbe177d6 Drop RDP backend
Users interested in remote access to wlroots compositors should use
wayvnc:

https://github.com/any1/wayvnc
2020-01-10 19:38:39 +01:00
Jason
b5cb6de232 Allow WLR_RDP_PORT to be any valid TCP/UDP port number 2020-01-08 10:29:52 +01:00
Scott Anderson
b58e8451b8 backend: Do not attempt DRM on X11/WL failure
This can really mess with the session if logind is not being used,
and it's going to always fail anyway.
2019-11-18 11:53:17 +01:00
Simon Ser
ca45f4490c Remove all wayland-server.h includes
The documentation for wayland-server.h says:

> Use of this header file is discouraged. Prefer including
> wayland-server-core.h instead, which does not include the server protocol
> header and as such only defines the library PI, excluding the deprecated API
> below.

Replacing wayland-server.h with wayland-server-core.h allows us to drop the
WL_HIDE_DEPRECATED declaration.
2019-07-27 15:49:32 -04:00
Drew DeVault
fd0d7d0907 Add FreeRDP backend for remote desktop support 2019-04-08 08:09:07 -06:00
Ryan Dwyer
9b4be5a595 Introduce noop backend
The noop backend is similar to headless, but it doesn't contain a
renderer. It can be used as a place to stash views for when there's no
physical outputs connected.
2019-01-17 20:13:55 +10:00
emersion
51bfdd620e
Use #if instead of #ifdef for wlroots config data
This prevents some annoying issues when e.g. not including wlr/config.h or
making a typo in the guard name.
2018-11-12 10:12:46 +01:00
emersion
f9eb5df80e backend: fix use-after-free in wlr_backend_autocreate
Found by clang static analyzer.
2018-10-13 10:58:59 +02:00
emersion
b0635bf3e7 Rename get_present_clock to get_presentation clock, use it 2018-10-04 22:00:22 +02:00
emersion
54e1287f30 backend: add get_present_clock 2018-10-04 21:58:17 +02:00
nyorain
7b52388424 Rework session handling
Sessions can now be retrieved from a backend in a more general manner.
Multi-backend gets back its `session` field that contains the session
if one was created, removing the interfacing from multi backend with the
drm backend directly. This adds the possibility to use sessions even
without the drm backend.

It additionally fixes the bug that 2 session objects got created when
WLR_BACKENDS were set to "libinput,drm".

To allow vt switching without drm backend (and drm fd) on logind, start
listening to PropertiesChanged signals from dbus and parse the session
"Active" property when no master fd was created (this does not change
current drm backend behaviour in any way).
2018-09-24 23:35:09 +02:00
Drew DeVault
4b096fc114 Revert "Merge pull request #1153 from emersion/include-config"
This reverts commit ef0a6ea4d2, reversing
changes made to 8d03bc9178.
2018-07-21 09:44:20 -04:00
emersion
41094a7df5 Always include config.h 2018-07-21 13:08:23 +01:00
emersion
7cbef15206
util: add wlr_ prefix to log symbols 2018-07-09 22:49:54 +01:00
Dominique Martinet
e5348ad7d3 backend autocreate: fix leak when WLR_BACKENDS is set
Found through static analysis
2018-06-30 11:45:57 +09:00
Ilia Bozhinov
24cf70ae96 backends: implement custom EGL and renderer initialization
Compositors now have more control over how the backend creates its
renderer. Currently all backends create an EGL/GLES2 renderer, so
the necessary attributes for creating the context are passed to a
user-provided callback function. It is responsible for initializing
provided wlr_egl and to return a renderer. On fail, return 0.

Fixes #987
2018-05-25 14:56:52 +03:00
emersion
75b10cd621
backend: support creating DRM and libinput via WLR_BACKENDS 2018-05-19 09:32:08 +01:00
emersion
007d83c6ee
backend: allow multiple backends in WLR_BACKENDS 2018-05-19 09:09:03 +01:00
emersion
a1631dd9ee
backend: add WLR_BACKEND env variable 2018-05-19 09:08:59 +01:00
emersion
d2ebbd103c
backend: remove wlr_backend_get_egl 2018-04-08 11:00:56 -04:00
Tancredi Orlando
68ad7e5092 Add ifdef to build without X11 2018-04-04 19:59:47 +02:00
Drew DeVault
56deff41b6 Implement input inhibit in rootston 2018-04-03 15:09:53 -04:00
emersion
5111f7df84
backend/x11: fix extra output 2018-03-30 23:51:20 -04:00
emersion
0a7a8cbd1c
backend/x11: add WLR_X11_OUTPUTS support 2018-03-30 23:51:19 -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
Drew DeVault
706f77e3c7 Address review feedback 2018-03-26 23:15:21 -04:00
Cedric Sodhi
51141dd11e Minor corrections 2018-03-23 10:28:36 +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
1d9be89e2d
Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
Scott Anderson
86269052eb Explicitly export EFL symbols 2018-02-19 14:26:40 +13:00
Scott Anderson
f27c0b44b8 Remove usec_to_msec from public API 2018-02-19 10:43:25 +13:00
emersion
c2e1474010
Reformat all #include directives 2018-02-12 21:29:23 +01:00
emersion
10ecf871f2
Remove wlr_backend.events.{output_remove,device_remove} 2018-02-12 10:36:43 +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
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
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
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
Tony Crisci
ca6a0ef1bb always return multibakend from autocreate 2017-12-19 19:07:33 -05:00
Tony Crisci
a937016e38 remove session from multibackend 2017-12-19 18:25:46 -05:00
Tony Crisci
4e804ef40f add backend destroy event 2017-12-19 18:14:47 -05:00
emersion
4a36ba4bdd
Destroy multi backend on display destroy 2017-12-19 18:28:47 +01:00
Tony Crisci
875a5b446f remove time usec 2017-10-30 15:43:06 -04:00
Scott Anderson
009c3747a8 Multi-GPU DRM 2017-10-01 22:29:25 +13:00
Scott Anderson
fa3d0ed929 Change wlr_session to open every GPU 2017-10-01 16:47:05 +13:00
Scott Anderson
7ad2a57feb Open X11 Window 2017-09-29 16:12:13 +13:00
Scott Anderson
a598e6d026 Add X11 backend skeleton 2017-09-29 16:12:13 +13:00
Scott Anderson
fb93628bda Merge wlr_udev into wlr_session 2017-08-26 14:02:04 +12:00
Scott Anderson
46823152ea Rename functions to be consistent with #93 2017-08-26 11:56:43 +12:00
Dominique Martinet
4bbf718e7d impl->destroy cleanup:
- remove trivial destroy() function
 - make sure we check impl and impl->destroy before calling
 - always call free if not implemented
2017-08-14 16:22:31 +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
60d1131df2 Re-enable backend autoselection 2017-08-12 19:56:55 -04:00
Drew DeVault
81cd90297d Refactor out wlr_backend_state from wl/multi 2017-08-12 11:43:36 -04:00
Drew DeVault
c24351681f Refactor EGL handling 2017-08-10 22:15:37 -04:00
Drew DeVault
f1a069d50d Log that the X11 backend is unimplemented 2017-08-05 23:03:56 -04: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
Drew DeVault
f4453d104d Reorganize wlr-common 2017-06-21 12:10:07 -04:00
Drew DeVault
c2d0090ad7 Support multiple wl backend outputs 2017-06-20 18:22:21 -04:00
nyorain
e22626ef6a Adapt codestyle 2017-06-19 22:39:20 +02:00
nyorain
10526de444 Fix furhter wayland backend issues 2017-06-19 19:40:58 +02:00
Drew DeVault
e257afeb7e Establish multi backend support 2017-06-13 08:10:36 -04:00
Drew DeVault
7a5f35b5bb Reassign ownership of libinput handle 2017-06-13 08:10:36 -04:00
Drew DeVault
0e75d157f5 Initialize keyboards from libinput 2017-06-13 08:10:36 -04:00
Drew DeVault
af69591e62 Add error handling and init in backend_autocreate 2017-06-13 08:10:36 -04:00
Drew DeVault
325a331425 Fix some build errors 2017-06-12 22:45:25 -04:00
Drew DeVault
7d82476590 Refactor type implementations 2017-06-04 19:30:50 -04:00
Drew DeVault
40b85d992a Refactor udev and drm initialization 2017-06-01 20:29:10 -04:00
Drew DeVault
c7f6981d9c Clean up outputs on exit 2017-05-31 16:17:04 -04:00
Drew DeVault
fee409bd0a Generalize DPMS, remove DRM refs from example 2017-05-31 15:38:26 -04:00
Drew DeVault
00931f2f8f Generalize output handling 2017-05-07 12:26:48 -04:00
Drew DeVault
15b1ce9e6c Refactor backend state management 2017-05-07 10:12:54 -04:00