This commit is contained in:
Pete 2025-10-16 14:04:14 +02:00 committed by GitHub
commit 7f85dcf593
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 17 deletions

View file

@ -15,7 +15,7 @@ public class FFMpegArgumentProcessorTest
[TestMethod]
public void Processor_GlobalOptions_GetUsed()
{
var globalWorkingDir = "Whatever";
var globalWorkingDir = "Whatever1";
var processor = CreateArgumentProcessor();
try
@ -47,7 +47,7 @@ public class FFMpegArgumentProcessorTest
[TestMethod]
public void Processor_Options_CanBeOverridden_And_Configured()
{
var globalConfig = "Whatever";
var globalConfig = "Whatever2";
try
{
@ -59,14 +59,14 @@ public class FFMpegArgumentProcessorTest
var overrideOptions = new FFOptions { WorkingDirectory = "override" };
GlobalFFOptions.Configure(new FFOptions { WorkingDirectory = globalConfig, TemporaryFilesFolder = globalConfig, BinaryFolder = globalConfig });
var options = processor.GetConfiguredOptions(overrideOptions);
var configuredOptions = processor.GetConfiguredOptions(overrideOptions);
Assert.AreEqual(options.WorkingDirectory, overrideOptions.WorkingDirectory);
Assert.AreEqual(options.TemporaryFilesFolder, overrideOptions.TemporaryFilesFolder);
Assert.AreEqual(options.BinaryFolder, overrideOptions.BinaryFolder);
Assert.AreEqual(configuredOptions.WorkingDirectory, overrideOptions.WorkingDirectory);
Assert.AreEqual(configuredOptions.TemporaryFilesFolder, overrideOptions.TemporaryFilesFolder);
Assert.AreEqual(configuredOptions.BinaryFolder, overrideOptions.BinaryFolder);
Assert.AreEqual(sessionTempDir, options.TemporaryFilesFolder);
Assert.AreNotEqual(globalConfig, options.BinaryFolder);
Assert.AreEqual(sessionTempDir, configuredOptions.TemporaryFilesFolder);
Assert.AreNotEqual(globalConfig, configuredOptions.BinaryFolder);
}
finally
{
@ -77,7 +77,7 @@ public class FFMpegArgumentProcessorTest
[TestMethod]
public void Options_Global_And_Session_Options_Can_Differ()
{
var globalWorkingDir = "Whatever";
var globalWorkingDir = "Whatever3";
try
{

View file

@ -7,6 +7,7 @@ namespace FFMpegCore.Arguments;
public abstract class PipeArgument
{
private readonly PipeDirection _direction;
private readonly object _pipeLock = new();
protected PipeArgument(PipeDirection direction)
{
@ -22,19 +23,25 @@ public abstract class PipeArgument
public void Pre()
{
if (Pipe != null)
lock (_pipeLock)
{
throw new InvalidOperationException("Pipe already has been opened");
}
if (Pipe != null)
{
throw new InvalidOperationException("Pipe already has been opened");
}
Pipe = new NamedPipeServerStream(PipeName, _direction, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
Pipe = new NamedPipeServerStream(PipeName, _direction, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
}
}
public void Post()
{
Debug.WriteLine($"Disposing NamedPipeServerStream on {GetType().Name}");
Pipe?.Dispose();
Pipe = null!;
lock (_pipeLock)
{
Pipe?.Dispose();
Pipe = null!;
}
}
public async Task During(CancellationToken cancellationToken = default)
@ -50,9 +57,12 @@ public abstract class PipeArgument
finally
{
Debug.WriteLine($"Disconnecting NamedPipeServerStream on {GetType().Name}");
if (Pipe is { IsConnected: true })
lock (_pipeLock)
{
Pipe.Disconnect();
if (Pipe is { IsConnected: true })
{
Pipe.Disconnect();
}
}
}
}