Commit Graph

248 Commits

Author SHA1 Message Date
Victor Brekenfeld de526f4b23 drm: Add functions to query device state 2018-11-29 16:13:07 +01:00
Victor Brekenfeld 2675cf94dc egl_surface: fix CursorBackend implementation 2018-11-29 16:13:07 +01:00
Victor Brekenfeld f17e37465b drm: Remove associated Return type from Device 2018-11-29 16:13:07 +01:00
Victor Brekenfeld f8499e533a libinput: fix warning when not building backend_session 2018-11-29 16:13:07 +01:00
Victor Brekenfeld 9e5dad4c23 session: export OFlag 2018-11-29 16:13:07 +01:00
Victor Brekenfeld f74af7ba18 udev: use same order for bind arguments 2018-11-29 16:13:07 +01:00
Victor Brekenfeld 9ee44672a0 cargo fmt 2018-11-29 16:13:07 +01:00
Victor Brekenfeld bd5690bd77 Refactor drm backend
- Split `DrmDevice` into `LegacyDrmDevice`, `GbmDevice` and `EglDevice`
- Provide common `Device` and `RawDevice` traits

- Change `DrmBackend` into `Surface` (and `RawSurface`) implementations of each `Device` (or `RawDevice`)
2018-11-29 16:13:07 +01:00
Victor Brekenfeld b537237a74 Refactor udev backend
- Do not open devices for `UdevHandler` anymore
- `UdevBackend` does not require `LoopHandle` or `Session` anymore
- Type of the created device can be choosed freely by the handler
- `UdevBackendObserver` is not needed anymore
2018-11-29 16:13:07 +01:00
Victor Brekenfeld 505791e336 Upgrade backends to calloop 0.4 and renamed gl-traits 2018-11-29 16:13:05 +01:00
Victor Brekenfeld 38ec44f70c Hide SoftwareRenderer behind feature flag
- Don't let backend depend on `CursorBackend` (used to be `GraphicsBackend`) anymore
2018-11-29 16:12:11 +01:00
Victor Brekenfeld ccc7abc94f Create general SwapBuffersError 2018-11-29 16:12:11 +01:00
Victor Brekenfeld bbf28655d1 Rename GraphicsBackend to CursorBackend 2018-11-29 16:12:11 +01:00
Victor Brekenfeld ac0dc42e9e Add seperate GL module
- Move parts of glium & egl module into own module
- Add raw GL loader as an alternative
2018-11-29 16:12:11 +01:00
Victor Brekenfeld c9e67cdfef Move egl module
- Remove gbm code
- rename EGLWaylandExtensions to EGLGraphicsBackend
- remove OpenGL specific code where possible
2018-11-29 16:12:11 +01:00
Pablo Stebler 630b659ae6 Upgrade calloop and winit (#114)
* Fix compilation with calloop 0.4

* Use `Into` instead of changing signatures

* Bump winit to 0.18

* Fix logind for calloop 0.4

* Cargo fmt
2018-11-17 18:01:04 +01:00
Colin Benner 734d2ce996 Fmt, spelling and capitalisation fixes (#113)
* Rename priviledged to privileged in backend/drm/mod.rs

* Fix a number of typos in comments

* Fix typos in string literals

* Wrap identifiers with backticks in doc comments

* Spelling and capitalisation in doc comments

* Use XWayland in comments

This seems to be the standard capitalisation, even though the executable
is called `Xwayland`.

* Use Glium instead of glium in comments

* Use DRM and API in comments

* Fix remaining occurrence of 'priviledged'

* Reformat code to appease Travis' rustfmt
2018-10-30 13:56:30 +01:00
Victor Berger 9f0a1fb244 backend.winit: remove the moved() event
This event poses issues regarding its semantic (what space are the
coordinates in?) and arguably won't be used anyway. So let's remove it
for now, it can still be added afterwards if it appears to be really
needed.
2018-10-15 11:15:10 +02:00
Victor Berger df12fa4e8b backends.winit: only expose physical sizes
Unify winit with the other backends in only ever dealing with physical
sizes. All dimensions and coordinates are provided in the physical space
(transformed by the dpi factor provided by winit), and the user is
responsible for dealing with the dpi scaling if they want.

A compositor using it can deal with it either by following the scaling
transmitted by the backend or using some value retrieved by other means
(like a command line argument, like weston does).

This means that a non-hidpi aware implementation will appear very small
on an hidpi screen, but not broken. This is now the current state of
anvil.

This also changes the WinitEventsHandler trait to merge the resized()
and hidpifactorchanged() callbacks into a single one, providing the
physical size and the dpi factor whenever either changes.
2018-10-15 11:15:10 +02:00
Jonas Platte a77e29d9b5 lib: Use nested imports 2018-10-07 22:39:18 +02:00
Lucas Timmins 2e9096923e Update changelog and make the argument of `WinitEventsHandler fn moved()` a LogicalPosition 2018-09-30 19:24:13 +08:00
Lucas Timmins 673f0cd0aa Use physical size to resize egl surface and change `WinitEventsHandler fn resized()` to take a LogicalSize 2018-09-30 19:22:35 +08:00
Lucas Timmins ffdf245259 Upgrade winit backend to 0.17 2018-09-30 19:22:35 +08:00
Victor Berger bd08f78acd Return the backends to the user if binding fails. 2018-09-28 18:01:33 +02:00
Victor Berger 7f8d32429b cargo fmt 2018-09-27 21:17:10 +02:00
Victor Berger 6328f68b71 fix yet even more errors with logind backend 2018-09-25 11:55:30 +02:00
Victor Berger 95d55f4b96 fix yet more errors with logind backend 2018-09-25 11:20:17 +02:00
Victor Berger 97e960a0f1 fix more logind backend errors 2018-09-25 10:29:35 +02:00
Victor Berger 53d27264a2 fix some logind backend errors 2018-09-25 09:44:07 +02:00
Victor Berger 269c9a5c7c fix doc copy/paste error 2018-09-25 09:43:49 +02:00
Victor Berger 454f874284 cargo fmt 2018-09-25 00:32:09 +02:00
Victor Berger 605895e30f update to wayland-rs 0.21 2018-09-25 00:31:58 +02:00
Colin Benner 6d31e9e5ff address more clippy warnings
Not sure how much of an improvement these are.
2018-06-29 12:30:42 +02:00
Colin Benner 4598ba0b48 address a bunch of clippy warnings 2018-06-28 11:33:49 +02:00
Victor Berger 89764bf442 wayland.backend.egl: derive Debug for Format 2018-05-19 19:48:13 +02:00
Victor Berger de373074fd Update winit to 0.14 2018-05-12 12:55:37 +02:00
Victor Berger 422e8b33e0 backend.winit: migrate to wayland-rs 0.20 2018-04-18 09:58:32 +02:00
Victor Berger 53242bd974 backend.libinput: migrate to wayland-rs 0.20 2018-04-18 09:53:54 +02:00
Victor Berger 31a3d40589 backend.drm: update doc examples 2018-04-18 09:44:22 +02:00
Victor Berger 7f6af94733 backend: migrate drm & udev 2018-04-18 09:38:35 +02:00
Victor Berger f9dbabce56 backend.graphics: port no-feature code to wayland-rs 0.20 2018-04-17 19:17:11 +02:00
Victor Berger cb4b783dc2 backend.session.logind fixes 2018-04-17 19:08:54 +02:00
Victor Berger b80093ffda backend.session: migrate to wayland_rs-0.20 2018-04-17 18:39:07 +02:00
Victor Berger e44b0e596e wayland.seat: migrate to wayland_rs-0.20 2018-04-15 11:55:16 +02:00
Drakulix c36c511c53 [glium] Remove unnecessary mutable self reference for borrowing 2018-03-29 15:31:25 +02:00
Drakulix d051e141cf Refactor PointerAxisEvent to handle multiple axis 2018-03-22 16:10:32 +01:00
Drakulix d005cd4fc6 Replace time stub with proper timestamps 2018-03-17 18:15:34 +01:00
Drakulix 4ee34fe43a Fix winit transformed input for negative positions 2018-03-13 18:41:37 +01:00
Drakulix 81375a085f Allow relative mouse movement to be negative 2018-03-13 15:06:52 +01:00
Drakulix a6d8b2a802 Fix winit transformed input 2018-03-09 17:37:27 +01:00
Drakulix bdb653042c Update glium integration to allow mutable borrowing 2018-03-09 11:50:01 +01:00
Drakulix 9cb409de9b Add missing derives for AutoId 2018-02-26 18:56:28 +01:00
Drakulix 5cfdf931fb Update for wayland-server 0.14 2018-02-21 21:02:14 +01:00
Drakulix f4d3061b2b Fix tests & examples 2018-02-21 14:52:43 +01:00
Drakulix 85bac997e0 Fix merge with latest logind bug fixes 2018-02-21 14:52:31 +01:00
Drakulix 4a2658090b Code formatting 2018-02-21 14:24:37 +01:00
Drakulix 5d66f8fdb3 Give EventLoopHandle to DrmHandler 2018-02-21 14:24:20 +01:00
Drakulix b80674bdf5 Introduce SessionObserver
`DrmDevice` and `UdevBackend` now do not need to be wrapped into `StateToken`s anymore, but can return a separate `SessionObserver` object using the new `AsSessionObserver` trait.

This change was motivated by allowing the `UdevHandle` to obtain a mutable reference to an `EventLoopHandle` to create wayland object, e.g. a `wl_output` object.

Previously this was not possible.

Depends on https://github.com/Smithay/wayland-rs/pull/164
2018-02-21 14:24:20 +01:00
Drakulix 0ad723a71b Allow `DrmBackend` to act as `drm::control::Device` 2018-02-21 13:31:05 +01:00
Drakulix 2294e79814 Reset drm device into text mode on tty switch 2018-02-20 19:19:22 +01:00
Drakulix e3113caa72 Add new travis feature for logind 2018-02-20 19:19:22 +01:00
Drakulix 525c9b60c4 rustfmt 2018-02-20 19:19:22 +01:00
Drakulix 20e10612b9 Add documentation for logind/auto session 2018-02-20 19:19:22 +01:00
Drakulix 310bc94a20 Fix disappearing cursor after tty switch 2018-02-20 19:19:22 +01:00
Drakulix 5411209bb5 Fix libinput panic on tty switch 2018-02-20 19:19:22 +01:00
Drakulix 495c492e50 Fix trying to become drm master on logind session 2018-02-20 19:19:22 +01:00
Drakulix a768e298f2 Add auto backend 2018-02-20 19:19:22 +01:00
Drakulix b16c62b19f Add logind session 2018-02-20 19:19:22 +01:00
Drakulix 4971278a25 Remove unused type parameter 2018-02-20 19:19:22 +01:00
Victor Berger 036633541a Remove trailing code fence in documentation 2018-02-20 19:08:23 +01:00
Drakulix ef0cfb9f2c Add names to backend seats 2018-02-19 12:49:55 +01:00
Drakulix d3a454ad72 Add winit events handler 2018-02-18 23:42:33 +01:00
Drakulix b53ff34aab Add option to access underlying window 2018-02-18 23:42:02 +01:00
Drakulix 8a30689015 Add getter for current `DrmBackend` mode 2018-02-18 22:04:13 +01:00
Drakulix a9c75656a2 Add event_loop to `InputBackend` and `InputHandler` traits 2018-01-12 16:41:33 +01:00
Drakulix 32f48b3cd2 Fix some clippy lints 2018-01-09 14:12:31 +01:00
Drakulix b125ce8005 Fix backend_drm feature 2018-01-07 23:44:21 +01:00
Drakulix 66c011c942 Use new rustfmt-preview 2018-01-07 22:30:38 +01:00
Drakulix 25c1e30fb3 Fix drm doc-test for new egl buffer changes 2018-01-07 22:12:34 +01:00
Drakulix aaa68b1cce Add documentation for the egl buffer features 2018-01-07 22:12:14 +01:00
Drakulix efaadb8882 Fix a bunch of warnings 2018-01-07 20:24:40 +01:00
Drakulix c5f475ebb5 Make unbind_egl_display into Drop implementation for EGLDisplay 2018-01-07 13:02:26 +01:00
Drakulix a527456ba6 Fixup drm backends for egl hardware-acceleration
- Decouple DrmBackend and DrmDevice through Weak references
- Move EGL-WlBuffer related functionality into it's own trait
- Impl new trait by every struct that can theoretically bind the display although it is no rendering target (no EGLGraphicsBackend), e.g. DrmDevice
- Move texture binding into own struct `EGLDisplay` created by `bind_wl_display` that can be passed around freely
- Add device num to DrmDevice for HashMap storage
- Fixup and enable acceleration on drm and udev examples made possible by the previous changes.
2018-01-05 20:04:46 +01:00
Drakulix 6c6d54064d Get it to work... 2017-12-28 15:30:53 +01:00
Drakulix 726991367d Rework egl image api 2017-12-27 12:20:16 +01:00
Drakulix 5d7e96103d Rework EGL module 2017-12-24 14:29:45 +01:00
Drakulix 5c846d550c Start EGL wl_buffer image retrieval 2017-12-24 14:12:51 +01:00
Drakulix 14fc36bf54 Add binding/unbinding wayland display on EGLContext 2017-12-24 14:12:51 +01:00
Drakulix a9d30374dc Add EGL_WL_bind_wayland_display bindings 2017-12-24 14:12:51 +01:00
Drakulix e1b2c88c83 Use global gl_generator generator 2017-12-24 14:12:51 +01:00
Drakulix d0046e4c60 Fix rare hot-plugging bug 2017-12-21 16:25:21 +01:00
Drakulix 4207611e6d rustfmt code 2017-12-15 19:22:44 +01:00
Drakulix c9e7624a33 Remove (incomplete) logind support for now 2017-12-07 15:25:21 +01:00
Drakulix 5f59ded3f0 Fix udev example 2017-12-07 15:20:33 +01:00
Drakulix 40ef1236ea Update to released udev/libinput versions 2017-12-06 02:06:00 +01:00
Drakulix 71f107118f Make libinput backend work without the session feature 2017-12-03 22:44:45 +01:00
Drakulix ae5df5039d Fix drm example and tests 2017-12-03 22:33:21 +01:00
Drakulix c5e66176c6 Document DirectSessionNotifier Id type 2017-12-02 17:09:34 +01:00
Drakulix bd83bc5b2d Restore drm state correctly 2017-12-02 17:07:52 +01:00
Drakulix 33286df0d6 Make it impossible to pass invalid `SessionObserver` ids.
- Add an associated type to the `SessionNotifier` trait for the returned Id's instead of using usize.
- Create a new Id type for the `DirectSessionNotifier`'s implementation, wrapping the previously used usize.
- Derive necessary traits of the new wrapper, make internal value inaccessible and Id's not publically constructable.
2017-12-02 14:24:39 +01:00