screencastService: Do not try multiple pipelines on old Pipewire versions

Pipewire versions < 0.3.67 may not fail immediatly on negotiation
errors, thus use the last/fallback pipeline directly.
Technically, a similar recent version of Wireplumber is required
as well, but we can't check that easily and the combination of old
Wireplumber and new Pipewire is quite unlikely.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2609>
This commit is contained in:
robert.mader@collabora.com 2023-02-20 18:27:32 +01:00
parent 9cb40c4814
commit 80d72cfd32

View File

@ -244,7 +244,10 @@ var Recorder = class {
this._nodeId = nodeId; this._nodeId = nodeId;
this._pipelineState = PipelineState.STARTING; this._pipelineState = PipelineState.STARTING;
this._pipelineConfigs = PIPELINES.values(); const fallbackSupported =
Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67);
this._pipelineConfigs = fallbackSupported
? PIPELINES.values() : [PIPELINES.at(-1)].values();
this._tryNextPipeline(); this._tryNextPipeline();
}); });
this._sessionProxy.StartSync(); this._sessionProxy.StartSync();