Commit Graph

398 Commits

Author SHA1 Message Date
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
Drakulix 612436e42d Correctly scan for any encoders 2017-12-02 13:51:08 +01:00
Drakulix 13be5b1634 Add documentation 2017-11-29 22:28:14 +01:00
Drakulix 0350dca972 Automatically add udev backend to the event loop store 2017-11-29 22:28:14 +01:00
Drakulix ef2e0571e7 Swap session signal to usr2, because xwayland may use usr1 2017-11-29 22:28:14 +01:00
Drakulix b4be5a5786 Comment out logind integration for now 2017-11-29 22:28:14 +01:00
Drakulix 24f2d499f3 Add more logging to session 2017-11-29 22:28:14 +01:00
Drakulix 606efebe1b Remove unnecessary mutexes 2017-11-29 22:28:14 +01:00
Drakulix 96bb3570ba Get input working 2017-11-29 22:28:14 +01:00
Drakulix c7682e77de Udev backend 2017-11-29 22:28:13 +01:00
Victor Berger c31d966fd4 Upgrade wayland-server to 0.12 2017-11-03 17:31:51 +01:00
Demur Rumed ce844ba9f8 Cargo.toml: include repo, update nix/image 2017-10-09 15:17:19 +02:00
Jonas Platte 4946017c0c Apply a bunch of clippy suggestions 2017-10-07 18:40:59 +02:00
Drakulix 51886fbf00 Update to stable drm-rs version 2017-10-01 22:25:52 +02:00
Victor Berger 5a0713feb9 Fix winit backend on wayland
We were trying to swap_buffers while the xdg_surface had not been
configured yet, which is a protocol error.
2017-09-29 17:22:19 +02:00
Drakulix 7f45283759 cargo fmt 2017-09-21 20:50:10 +02:00
Drakulix d2617becbf Fix drm doc test and Deref impl 2017-09-21 19:05:59 +02:00
Drakulix f09bdd0a30 cargo fmt 2017-09-20 20:06:58 +02:00
Drakulix 518f7dbdfc Store DrmBackend in EventLoop state 2017-09-20 19:48:58 +02:00
Drakulix 0758ec98ba Fix the drm backend for wayland-rs 0.10 2017-09-20 17:09:37 +02:00
Drakulix 457d6d1c35 Free framebuffers correctly 2017-09-20 15:56:57 +02:00
Drakulix fa6742fb5f The glory of error-chain 2017-09-20 15:56:11 +02:00
Drakulix a04bfcdd11 Add encoder detection to runtime manipulation 2017-09-20 15:54:16 +02:00
Drakulix 174e4b9d0b Fix encoder detection 2017-09-20 15:53:19 +02:00
Drakulix d3fca34475 Do a better job at finding a crtc in the example 2017-09-20 15:52:47 +02:00
Drakulix bdb91fc1f1 Better explaination of the drm module
- Explain the types involved and their role
- Link to the drm-rs documentation
2017-09-20 15:51:59 +02:00
Drakulix 67b3621be3 drm: reformat 2017-09-20 15:51:59 +02:00
Drakulix ab77a87725 drm: Check for valid encoder 2017-09-20 15:51:59 +02:00
Drakulix 10fd94f963 drm: add more logging 2017-09-20 15:51:39 +02:00
Drakulix 73d262e292 drm: reformat 2017-09-20 15:51:39 +02:00
Drakulix 9c71793b0e drm: Add more inline comments explaining the drm code 2017-09-20 15:51:39 +02:00
Drakulix 7bf4105050 drm: Add error for multi-use of a single crtc 2017-09-20 15:51:39 +02:00
Drakulix f2bff6172b drm: Documentation 2017-09-20 15:51:38 +02:00
Drakulix 0698775153 drm: Introduce the Drm Backend
- new backend rendering via egl via gbm directly on a drm device
- refine EGLContext and EGLSurface dependencies through lifetimes
- fixup the old winit backend to work with these changes
- add new example using the drm backend instead
- change GliumDrawer to be static for the drm example
2017-09-20 15:50:14 +02:00
Victor Berger 88773cf1b3 cargo fmt 2017-09-05 19:51:05 +02:00
Victor Berger b19fafa1a0 Update winit dependency 2017-06-24 10:31:36 +02:00
Victor Berger 030261116d winit's Event has more variants now 2017-06-23 16:14:33 +02:00
Victor Berger bffc02c5f1 glium: impl Facade 2017-06-23 15:20:09 +02:00
Drakulix 206007f5a5 rustfmt 0.9 update 2017-06-20 11:31:18 +02:00
Drakulix b131f8168e Shorten surface type matching 2017-06-20 10:50:20 +02:00
Drakulix f70cc6bf55 rustfmt 2017-06-18 19:20:23 +02:00
Drakulix 57833f2b2d Bugfix surface_attribute termination 2017-06-15 13:34:01 +02:00
Drakulix 40e49ad7e9 Fix typos 2017-06-15 13:33:43 +02:00
Drakulix 5155b44946 Check if surface type is matching context type 2017-06-15 13:33:18 +02:00
Drakulix eef617258e rustfmt 2017-06-10 23:29:09 +02:00
Drakulix 2d255fd48d Decouple EGLSurface from EGLContext 2017-06-10 23:28:09 +02:00
Drakulix 11e9999cb9 Better wording for winit make_current 2017-06-05 14:06:58 +02:00
Drakulix 7a0639fae6 Reorder egl library loading 2017-06-04 23:22:51 +02:00
Drakulix 83b98ba77b Run cargo fmt 2017-06-04 23:13:19 +02:00
Drakulix 2453545329 Added logging to egl&winit + small bugfixes
- Added logging to winit & egl
- Fixed winit pointer scroll event only yielding horizontal events
- Fixed unsupported double_buffering for egl
2017-06-04 23:11:26 +02:00
Drakulix 4053d2bc30 Fixed copy&paste logging message errors 2017-06-04 23:10:50 +02:00
Drakulix a7628610d4 Remove robustness for now 2017-06-02 15:32:31 +02:00
Drakulix f890b4011d Fix egl initialization segfaults
- Don't initialize a surface twice, if context creation fails for one
version
- Don't let the loaded egl library go out of scope and thus invalidating
the function pointers
2017-06-02 15:25:16 +02:00
Drakulix e191c08186 Move glium.rs 2017-06-02 13:55:34 +02:00
Drakulix 2c9f6a7479 Flesh out glium compatibility 2017-06-02 13:55:28 +02:00
Drakulix 115eb4d200 Update winit 2017-06-02 13:54:34 +02:00
Drakulix dbaf4f7746 Rename variable to avoid confusion 2017-05-23 11:03:03 +02:00
Drakulix 94d6a0f987 Fix broken robost implementation 2017-05-23 11:02:39 +02:00
Drakulix 786d719dad rustfmt fixes 2017-05-21 22:50:50 +02:00
Drakulix 5bc641852f Bugfixes 2017-05-21 22:40:15 +02:00
Drakulix b950714c03 First EGL Rework draft 2017-05-18 22:28:02 +02:00
Drakulix 196b48041b Use an enum instead of a struct for `UnusedEvent` 2017-04-29 16:23:45 +02:00
Drakulix 3bd25011b0 Replace `()` with `UnusedEvent` 2017-04-27 16:12:06 +02:00
Drakulix a2f3b2a303 Fix some clippy warnings 2017-04-26 20:19:57 +02:00
Drakulix f7d3b3dee3 Fix formatting 2017-04-26 20:10:28 +02:00
Drakulix 4c5e2be11e Update libinput to v0.1.1 2017-04-26 20:09:57 +02:00
Drakulix 092fc198c3 Fixup glutin backend and more bugfixes 2017-04-24 00:30:02 +02:00
Drakulix 4fc595f68a Fixup libinput backend to use new event api 2017-04-23 19:55:43 +02:00
Drakulix d62f491801 Refactor `InputBackend` to use events. 2017-04-23 19:55:11 +02:00
Drakulix 056ce6312c Add set_cursor_representation 2017-04-21 22:25:01 +02:00
Drakulix 9b6273f297 Add set_output_metadata 2017-04-18 21:57:53 +02:00
Drakulix 109f4035e8 Move set_cursor_position to the graphics backend 2017-04-18 21:20:08 +02:00
Drakulix f95faba80f Add libinput documentation 2017-04-15 22:53:09 +02:00
Drakulix 4afad6f939 Expand `Seat` documentation 2017-04-15 22:48:55 +02:00
Drakulix cc6f0c9d73 Expand `on_seat_changed` documentation 2017-04-15 22:45:26 +02:00
Drakulix 66ea275d71 Fixup seat implementation 2017-04-15 22:42:42 +02:00
Drakulix 4c591a86bd Add initializer 2017-04-15 22:38:33 +02:00
Drakulix 8cbe96d1ac Add more logging 2017-04-15 22:28:51 +02:00
Drakulix da93b4ac67 Add touch event passing 2017-04-15 22:20:11 +02:00
Drakulix 2cc401594d Add pointer button event passing 2017-04-15 22:02:44 +02:00
Drakulix 01884a6aa8 Add pointer axis event passing 2017-04-15 21:46:27 +02:00
Drakulix a5cfed8715 Impl key events 2017-04-15 20:26:44 +02:00
Drakulix 3edb489a92 Add logging to libinput backend 2017-04-15 20:17:26 +02:00
Drakulix 4f3a140543 Fix capability update 2017-04-15 19:29:15 +02:00
Drakulix 0980f8a66c Remove done todos 2017-04-15 19:29:15 +02:00
Drakulix ab35f140a0 Use entry api for `DeviceAddedEvent`s seat creation/update 2017-04-15 19:29:15 +02:00
Drakulix 7aca2edb13 Adjust InputBackend for libinput compatibility
- Make id be an `u64` to be able to populate it by a hash
- Add internal interface to get a mutable capabilities reference from a `Seat`.
- `InputConfig` type does not need to be `Sized` on `InputBackend`
2017-04-15 19:29:15 +02:00
Drakulix 5369cc2927 First draft of a libinput backend
- Only does DeviceEvent parsing for now
- No way to initialize it
2017-04-15 19:29:15 +02:00
Drakulix cba111bf4f Add input crate 2017-04-15 19:29:15 +02:00
Victor Berger a7117369a2
cargo fmt 2017-04-09 16:43:10 +02:00
Drakulix ae375624ac Fix formatting 2017-03-20 14:33:27 +01:00
Drakulix d53a7fcc1d Added SeatCapabilities 2017-03-19 21:55:32 +01:00
Drakulix 3120683b24 Fix glium support 2017-03-18 17:27:49 +01:00
Drakulix 55e56ffc6d Rename Renderer to GraphicsBackend 2017-03-18 17:27:38 +01:00
Drakulix 4c2e0f889f Update features 2017-03-18 17:26:51 +01:00
Drakulix 8e92c9c922 Add InputConfig 2017-03-18 17:14:52 +01:00
Drakulix 460630d0c8 Fixup documentation 2017-03-14 19:35:12 +01:00
Drakulix 728bab5690 Code cleanup 2017-03-14 19:35:02 +01:00
Drakulix ec8149b084 Initial glutin backend implementation 2017-03-14 19:34:48 +01:00