Commit graph

50 commits

Author SHA1 Message Date
5721955686
services/pipewire: ignore ENOENT errors
Pipewire describes all errors as fatal, however these just aren't,
don't seem to be squashable, and resetting for them breaks users.
2026-03-04 23:26:33 -08:00
bbedward
36517a2c10
services/pipewire: manage default objs using normal qt properties
Fixes use after free bugs due to pointer mismatches in destructors.
Drops SimpleObjectHandle.
2026-02-23 23:17:42 -08:00
Andrei
afbc5ffd4e
services/pipewire: use node volume control when device missing
Some outputs which present a pipewire device object do not present
routes, instead expecting volume to be set on the associated pipewire node.
2026-02-21 20:39:03 -08:00
783b97152a
build: update CI, nix checkouts, lints 2026-01-13 23:20:55 -08:00
eecc2f88b3
services/pipewire: ignore monitors in PwNodeLinkTracker 2026-01-09 01:09:25 -08:00
11d6d67961
services/pipewire: add peak detection 2026-01-09 01:09:24 -08:00
5d8354a88b
services/pipewire: add reconnect support 2026-01-08 04:11:09 -08:00
41828c4180
services/pipewire: use node volume controls when routeDevice missing
For bluez audio streams and potentially other types of synthetic
device, volume controls are managed via the node and persistence is
handled by the service.
2025-12-25 20:58:05 -08:00
0a7dcf30ea
build: update clang tooling and reformat 2025-11-15 04:43:27 -08:00
1552aca3df
build: fix new clang-tidy lints 2025-11-15 04:29:12 -08:00
a00ff03944
services/pipewire: cache route device volumes to initialize nodes
Nodes referencing a device can be bound later than the device is
bound. If this happens, the node will not receive an initial route
device volume change event. This change caches the last known route
device volume and initializes the device with it if present.
2025-11-14 02:12:42 -08:00
ea79eaceb0
services/pipewire: do not use device for pro audio node controls
Note that the device object is currently still bound. This should not
be necessary.

Fixes #178
2025-10-11 21:42:58 -07:00
9662234759
services/pipewire: consider device volume step when sending updates
Previously a hardcoded 0.0001 offset was used to determine if a volume
change was significant enough to send to a device, however some
devices have a much more granular step size, which caused future
volume updates to be blocked.

This change replaces the hardcoded offset with the volumeStep device
route property which should be large enough for the device to work with.

Fixes #279
2025-10-01 00:29:45 -07:00
1d94144976
all: fix lints 2025-09-28 23:56:32 -07:00
4dad447570
docs: remove }; in headers + typo fixes
}; breaks the docgen regex
2025-07-24 17:15:03 -07:00
91dcb41d22
services/pipewire: destroy qml ifaces early to avoid user callbacks
Consumers of defaultAudio*Changed signals can run code between
safeDestroy being called and PwObjectIface destruction due to
signal connection order. This change destroys ifaces earlier so they
are nulled by the time a changed signal is fired from destruction,
preventing access between ~PwNode() and ~QObject() completion.

Fixes #116 #122 #124
2025-07-17 00:22:58 -07:00
3d594e16dd
core/log: track default logging categories
Fixes a bug in fb37be7 which ignored default logging categories due to
skipping QLoggingRegistry's filter.
2025-07-08 13:49:06 -07:00
87d99b866f
services/pipewire: destroy bound audio object when node is destroyed
Fixes a leak and prevents a UAF via device volume signals
derefing the freed node.

Fixes #91
2025-07-04 20:29:50 -07:00
02362c3e94
services/pipewire: add missing ; after Q_ENUM for docgen 2025-06-20 02:53:30 -07:00
95d0af8113
services/pipewire: update volume props from device for device nodes
Yet another device node edge case. In addition to only writing via
a pw_device when present, now we only read from one as well.

This fixes missing state changes not conveyed by the pw_node.

Fixes #35
2025-06-19 05:12:24 -07:00
517143adf9
all: fix new lints 2025-06-12 17:01:13 -07:00
nydragon
ee570ec623
services/pipewire: expose node type 2025-06-07 03:26:55 -07:00
6d8022b709
service/pipewire: add registry and node ready properties 2025-01-14 15:30:47 -08:00
2c411fce5a
all: fix new lints 2025-01-07 03:11:19 -08:00
3fc1c914c7
lint: remove reinterpret_cast lint
Unhelpful.
2024-12-06 20:18:38 -08:00
2571766d3b
all: fix clang 18 lints 2024-11-24 03:36:04 -08:00
b528be9426
all: fix gcc warnings 2024-11-05 13:31:24 -08:00
92252c36a3
build: fix gcc 2024-11-05 12:14:45 -08:00
7ffce72b31
all: optimize build 2024-11-05 04:15:17 -08:00
1168879d6d
build: only install necessary qml module files 2024-11-04 14:13:37 -08:00
cdeec6ee83
all: use fully qualified type names in signals and invokables
Further fixes qmllint/qmlls
2024-11-01 21:10:21 -07:00
98cdb87181
all: use UntypedObjectModel instead of ObjectModel in Q_PROPERTY
Fixes qmllint/qmlls type deduction for ObjectModels
2024-11-01 03:12:07 -07:00
746b0e70d7
all: use fully qualified type names in Q_PROPERTY
Fixes type deduction issues with qmllint/qmlls.
2024-11-01 01:43:22 -07:00
a931adf033
all: add DEPENDENCIES entries to qml modules
Fixes some qmlls/qmllint issues.
2024-10-31 14:05:02 -07:00
8e40112d14
service/pipewire: ignore metadata updates with null keys
Fixes #6
2024-10-06 00:57:19 -07:00
3ed39b2a79
service/pipewire: fix metadata permission checks 2024-09-26 15:52:31 -07:00
fbaec141c0
service/pipewire: improve documentation 2024-09-24 01:59:38 -07:00
fdc78ae16f
service/pipewire: add a way to set preferred default nodes 2024-09-24 01:59:01 -07:00
f889f08901
service/pipewire: refactor defaults and metadata handling 2024-09-23 23:53:54 -07:00
7f9762be53
service/pipewire: disconnect link tracker from registry on node destroy
Caused duplicate entries to be created due to double connection, which
then caused a crash.
2024-09-17 23:44:41 -07:00
931aca5392
service/pipewire: don't use configured default devices
These don't appear to be intended for use by applications, only the
non configured ones.

This fixes the default device being unset on many computers and the
device being lost on actions like headphone unplug which replace it.
2024-09-17 23:04:06 -07:00
f6ad617b67
service/pipewire: ignore insignificant device volume changes
Fixes devices getting stuck in a "waiting for volume change
acknowledgement" state forever.
2024-08-29 13:21:07 -07:00
79b22af093
service/pipewire: avoid overloading devices with volume changes
Wait until in-flight changes have been responded to before sending more.
2024-08-27 20:34:11 -07:00
c60871a7fb
service/pipewire: set device node volumes with device object
Fixes discrepancies between pulse and qs volumes, and volumes not
persisting across reboot or vt switches.
2024-08-27 01:34:34 -07:00
a9e4720fae
docs: use new member reference shorthand 2024-07-21 17:41:49 -07:00
e9cacbd92d
all: use type/prop shorthand in docs 2024-07-14 16:17:51 -07:00
8547d12396
service/pipewire: make binding warnings in docs more obvious 2024-06-27 20:45:27 -07:00
5016dbf0d4
all: replace list properties with ObjectModels 2024-05-23 17:28:07 -07:00
908ba3eef5
hyprland/global_shortcuts: fix crash when protocol is not present 2024-05-19 02:50:14 -07:00
3e80c4a4fd
service/pipewire: add pipewire module 2024-05-19 02:29:21 -07:00