To elaborate a bit on moving device start to Run and adding error return to failed graph Run. I also tested that with PlayCap sample [1] when the device is opened by another process. The way it was done in the first patch the sample will be displaying black screen in this case, with the present variant the behaviour matches Windows (at least with USB camera on Windows): it displays message box about graph run failure with the same error code. Also currently in Wine failure in filter_Pause() leads to hang on tear down (the case when some filter failed to start doesn't work very well). But then with the original test with _Pause on the filter tearing down graph was also hanging on Windows for me with USB camera. So while there might be some separate issue with handling failures in filter initialization to Pause state, it looks to me this way is better anyway.
1. https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7S...