This PR reverts the changes in https://github.com/ifm/nexxT/pull/30, which was having undesired side effects. Instead of fixing the deadlocking use case (which turned out to be pretty difficult) nexxT now detects cycles in the thread graph and refuses to start these configurations.
Therefore, configurations working with nexxT <= 0.6.0 might not work anymore for higher versions. If such a situation occurs, it might be enough to change the filter's thread assignments. If this is not possible (because GUI threads might be involved), a redesign of some specific filters might be necessary.
Moreover, the change also reduces the latency introduced by inter-thread connections by reducing the number of samples allowed to be buffered in the QT event loop, such that the test case introduced for issue #33 passes.
This PR reverts the changes in https://github.com/ifm/nexxT/pull/30, which was having undesired side effects. Instead of fixing the deadlocking use case (which turned out to be pretty difficult) nexxT now detects cycles in the thread graph and refuses to start these configurations.
Therefore, configurations working with nexxT <= 0.6.0 might not work anymore for higher versions. If such a situation occurs, it might be enough to change the filter's thread assignments. If this is not possible (because GUI threads might be involved), a redesign of some specific filters might be necessary.
Moreover, the change also reduces the latency introduced by inter-thread connections by reducing the number of samples allowed to be buffered in the QT event loop, such that the test case introduced for issue #33 passes.