summaryrefslogtreecommitdiff
path: root/src/libsystemd-terminal/sysview.c
AgeCommit message (Collapse)Author
2014-09-22terminal: signal object removal during sysview_context_stop()David Herrmann
Now that we no longer propagate callback return values, we can safely call into user-callbacks during sysview_context_stop(). This way, users can rely on all objects to be removed via callbacks (except if they failed during object creation). This avoids duplicating any object hashtables on the users' side and reduces memory consumption.
2014-09-22terminal: handle callback errors in sysview instead of propagating themDavid Herrmann
We cannot sanely propagate error codes if we call into user-callbacks multiple times for multiple objects. There is no way to merge those errors or somehow propagate them. However, we can just act similar to sd-event and print a log-message while discarding the values. This way, we allow error-returns, but can properly continue working on our objects.
2014-09-22terminal: allow user-context to be retrieved/storedDavid Herrmann
Add "userdata" storage to a bunch of external objects, namely displays and sessions. Furthermore, add some property retrieval helpers. This is required if we want external API users to not duplicate our own object hashtables, but retrieve context from the objects themselves.
2014-09-22terminal: raise sysview DEVICE_CHANGE events per attachmentDavid Herrmann
Instead of raising DEVICE_CHANGE only per device, we now raise it per device-session attachment. This is what we want for all sysview users, anyway, as sessions are meant to be independent of each other. Lets avoid any external session iterators and just do that in sysview itself.
2014-09-20terminal: make drm-connectors first-level devicesDavid Herrmann
So far, we only forward DRM cards via sysview APIs. However, with MST, connectors can be hotplugged, too. Forward the connectors as first-level devices via sysview so API users can react to changing DRM connectors.
2014-09-20terminal: forward DEVICE_CHANGE events via sysviewDavid Herrmann
Whe need to react to "change" events on devices, but we want to avoid duplicating udev-monitors everywhere. Therefore, make sysview forward change events to the sysview controllers, which can then properly react to it.
2014-09-20terminal: parse ID_SEAT not only for parents but the device itselfDavid Herrmann
When deciding what seat a device is on, we have to traverse all parents to find one with an ID_SEAT tag, otherwise, input devices plugged on a seated USB-hub are not automatically attached to the right seat. But any tags on the main device still overwrite the tags of the childs, so fix our logic to check the device itself first, before traversing the parents.
2014-09-16terminal: sd_bus_error_get_errno returns positive errnoThomas Hindoe Paaboel Andersen
The 3 calls to sd_bus_error_get_errno appear to expect a negative return value. This patch negates the returned value so it matches the other error cases in the 3 functions where sd_bus_error_get_errno is used.
2014-09-15terminal: fix missing hashmap_new() conversionsDavid Herrmann
hashmap_new() now takes *_ops instead of individual functions. Fix up any missing invokations of it that haven't been converted already.
2014-08-28terminal: free sysview-device names on destructionDavid Herrmann
Don't leak the device-names during device destruction in sysview. Somehow, the device-name is "const char*", so make it "char*" first to avoid warnings when calling free() on it.
2014-08-28terminal: sysview: don't return uninitialized error codesDavid Herrmann
In case 'scan_evdev' and 'scan_drm' are both false, we never set 'r' to anyhting, thus return an uninitialized error code. Fix this by always returning 0 as we catch negative codes earlier, anyway. Thanks to Thomas H.P. Anderson for the report.
2014-08-27terminal: add system view interfaceDavid Herrmann
We're going to need multiple binaries that provide session-services via logind device management. To avoid re-writing the seat/session/device scan/monitor interface for each of them, this commit adds a generic helper to libsystemd-terminal: The sysview interface scans and tracks seats, sessions and devices on a system. It basically mirrors the state of logind on the application side. Now, each session-service can listen for matching sessions and attach to them. On each session, managed device access is provided. This way, it is pretty simple to write session-services that attach to multiple sessions (even split across seats).