aboutsummaryrefslogtreecommitdiff
path: root/backend/libinput/backend.c
AgeCommit message (Collapse)Author
2021-04-14backend/libinput: terminate display on errorSimon Ser
2020-11-19backend/session: replace session_signal with events.activeSimon Ser
This is more idiomatic wlroots API. The new name makes it clear that the signal is emitted when wlr_session.active changes.
2020-11-19backend/session: operate on wlr_deviceSimon Ser
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-11Remove unneeded includes from wlr_input_device.hIsaac Freund
This uncovered many places where we were using things without directly including them.
2020-10-10backend/libinput: improve logger callbackSimon Ser
- Add a prefix to make it clear log messages come from libinput - Properly convert libinput log priority to wlroots'
2019-12-01backend/drm, backend/libinput: listen to session destroySimon Ser
This fixes a heap-use-after-free when the session is destroyed before the backend during wl_display_destroy: ==1085==ERROR: AddressSanitizer: heap-use-after-free on address 0x614000000180 at pc 0x7f88e3590c2d bp 0x7ffdc4e33f90 sp 0x7ffdc4e33f80 READ of size 8 at 0x614000000180 thread T0 #0 0x7f88e3590c2c in find_device ../subprojects/wlroots/backend/session/session.c:192 #1 0x7f88e3590e85 in wlr_session_close_file ../subprojects/wlroots/backend/session/session.c:204 #2 0x7f88e357b80c in libinput_close_restricted ../subprojects/wlroots/backend/libinput/backend.c:24 #3 0x7f88e21af274 (/lib64/libinput.so.10+0x28274) #4 0x7f88e21aff1d (/lib64/libinput.so.10+0x28f1d) #5 0x7f88e219ddac (/lib64/libinput.so.10+0x16dac) #6 0x7f88e21b415d in libinput_unref (/lib64/libinput.so.10+0x2d15d) #7 0x7f88e357c9d6 in backend_destroy ../subprojects/wlroots/backend/libinput/backend.c:130 #8 0x7f88e3545a09 in wlr_backend_destroy ../subprojects/wlroots/backend/backend.c:50 #9 0x7f88e358981a in multi_backend_destroy ../subprojects/wlroots/backend/multi/backend.c:54 #10 0x7f88e358a059 in handle_display_destroy ../subprojects/wlroots/backend/multi/backend.c:107 #11 0x7f88e314acde (/lib64/libwayland-server.so.0+0x8cde) #12 0x7f88e314b466 in wl_display_destroy (/lib64/libwayland-server.so.0+0x9466) #13 0x559fefb52385 in main ../main.c:67 #14 0x7f88e2639152 in __libc_start_main (/lib64/libc.so.6+0x27152) #15 0x559fefb4297d in _start (/home/simon/src/glider/build/glider+0x2297d) 0x614000000180 is located 320 bytes inside of 416-byte region [0x614000000040,0x6140000001e0) freed by thread T0 here: #0 0x7f88e3d0a6b0 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:122 #1 0x7f88e35b51fb in logind_session_destroy ../subprojects/wlroots/backend/session/logind.c:270 #2 0x7f88e35905a4 in wlr_session_destroy ../subprojects/wlroots/backend/session/session.c:156 #3 0x7f88e358f440 in handle_display_destroy ../subprojects/wlroots/backend/session/session.c:65 #4 0x7f88e314acde (/lib64/libwayland-server.so.0+0x8cde) previously allocated by thread T0 here: #0 0x7f88e3d0acd8 in __interceptor_calloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:153 #1 0x7f88e35b911c in logind_session_create ../subprojects/wlroots/backend/session/logind.c:746 #2 0x7f88e358f6b4 in wlr_session_create ../subprojects/wlroots/backend/session/session.c:91 #3 0x559fefb51ea6 in main ../main.c:20 #4 0x7f88e2639152 in __libc_start_main (/lib64/libc.so.6+0x27152)
2018-09-18backend/libinput: add assertionsemersion
2018-07-09util: add wlr_ prefix to log symbolsemersion
2018-06-14Multiseat fixesScott Anderson
2018-05-03Fix typos in comments and stringsmorganamilo
2018-04-25Don't use the wlr_ prefix for static functionsemersion
2018-04-25Make sure we don't use others' prefixesemersion
2018-04-25Remove wlr_ prefix from local symbolsemersion
2018-04-03Implement input inhibit in rootstonDrew DeVault
2018-02-25Fix null deref in wlr_libinput_backend_destroyDan Robertson
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-19Revert "ELF Visibility"Drew DeVault
2018-02-19Explicitly export EFL symbolsScott Anderson
2018-02-19Remove usec_to_msec from public APIScott Anderson
2018-02-12Reformat all #include directivesemersion
2018-02-12Make wlr_signal_emit_safe privateemersion
2018-02-12Remove wlr_backend.events.{output_remove,device_remove}emersion
2018-02-12Add wlr_signal_emit_safeemersion
2018-01-30backend: fix use-after-free when destroying backendsemersion
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.
2017-12-07Listen to display destroy in backendsemersion
2017-11-19Refactor wlr_list inside wlrootsemersion
2017-11-01libinput backend destroy: fix small leakDominique Martinet
2017-11-01Indentation fixDominique Martinet
Some space sneaked in. tabtabtab.
2017-11-01rootston exit: fix libinput destroyDominique Martinet
The wlr_list -> wl_list rework changed 'wlr_devices' to wl_list, but missed its use on destroy.
2017-10-22Forgot to rename theseDrew DeVault
2017-10-21Rename remaining refs to wlr_listDrew DeVault
2017-08-26Merge wlr_udev into wlr_sessionScott Anderson
2017-08-19libinput: wl_event_source_remove on destroyDominique Martinet
2017-08-16Improve no device detection supportDrew DeVault
2017-08-16libinput: fail if no input found on initDominique Martinet
This runs through events pending at init on initialization so we can tell if some devices are available. Note that with the way wlr_device_lists is managed, this checks that there is at least one device we handle - it doesn't have to be a keyboard, but there is at least a mouse or tablet_pad or something that we care about. Instead of failing inconditionally it might be better to leave the decision to the user, e.g. add a "backend_has_devices" function to call later. (Tested by moving /dev/input off) Fixes #24.
2017-08-14Refactor out wlr_input_device_stateDominique Martinet
2017-08-13Add backend detection functionsCalvin Lee
Resolves #80
2017-08-13wlr_backend_init -> wlr_backend_startDrew DeVault
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-13libinput backend: massive renamingDominique Martinet
- 'libinput' (backend's) to libinput_context - 'device' (libinput_device) to libinput_dev - 'dev' (wlr_device) to wlr_dev - 'devices' lists tangling of libinput devices to wlr_devices - 'devices' list of wlr_devices in backend state to wlr_device_lists
2017-08-12Re-enable backend autoselectionDrew DeVault
2017-08-12Update libinput backend with new state designDrew DeVault
2017-08-12Use libinput_event_destroy/xkb_*_unrefDominique Martinet
Also sneak in a missing drmModeFreePlaneResources
2017-08-12libinput: signal input remove on libinput backend destroyDominique Martinet
This lets the upper crust cleanup and free their own states
2017-08-11Fix libinput destroy for devices with multiple capabilitiesDominique Martinet
2017-08-11Complete a few destroy functionsDominique Martinet
This adds missing free calls for: - drm outputs - libinput backend in general - final udev free - output mode state
2017-08-06Changed header paths.Scott Anderson
2017-06-21Reorganize wlr-commonDrew DeVault
2017-06-21Fixed VT switchingScott Anderson
2017-06-14Allocate wlr_touch devicesDrew DeVault
2017-06-13Split keyboard code out into its own fileDrew DeVault
2017-06-13Handle key pressesDrew DeVault