diff --git a/DMX-2.0/SequenceurSon.cs b/DMX-2.0/SequenceurSon.cs index f997f89..a63b0a2 100644 --- a/DMX-2.0/SequenceurSon.cs +++ b/DMX-2.0/SequenceurSon.cs @@ -107,9 +107,10 @@ namespace DMX2 set{ if(element==null) return; if(element.CurrentState != Gst.State.Paused && element.CurrentState != Gst.State.Playing){ - lock(taskQueue)taskQueue.Enqueue(delegate(){ - PlayTime = value; - }); + lock(this) + taskQueue.Enqueue(delegate(){ + PlayTime = value; + }); return; } long pos = (long)(value.TotalMilliseconds) * 1000000; @@ -122,12 +123,12 @@ namespace DMX2 public TimeSpan Duration { get { if(element==null) return TimeSpan.Zero; - if(duration == TimeSpan.Zero) { + //if(duration == TimeSpan.Zero) { Gst.Format format = Gst.Format.Time ; long dur; element.QueryDuration(ref format, out dur); duration = TimeSpan.FromMilliseconds(dur/1000000); - } + //} return duration; } } @@ -162,9 +163,10 @@ namespace DMX2 { if(element == null)return; if(element.CurrentState != Gst.State.Paused && element.CurrentState != Gst.State.Playing){ - lock(taskQueue)taskQueue.Enqueue(delegate(){ - Play(); - }); + lock(this) + taskQueue.Enqueue(delegate(){ + Play(); + }); return; } @@ -211,7 +213,7 @@ namespace DMX2 void UiDestroyed (object sender, EventArgs e) { - //throw new NotImplementedException (); + ui=null; } public override int ValeurCircuit (Circuit c) { @@ -221,7 +223,9 @@ namespace DMX2 public override void Tick (TimeSpan time) { if(element!=null && taskQueue.Count>0) - lock(taskQueue)taskQueue.Dequeue()(); + if(element.CurrentState == Gst.State.Paused || element.CurrentState == Gst.State.Playing) + lock(this) + taskQueue.Dequeue()(); if (fading != TimeSpan.Zero) { fading-=time; @@ -282,7 +286,7 @@ namespace DMX2 System.Text.RegularExpressions.RegexOptions.Compiled); static System.Text.RegularExpressions.Regex regexCommand2 = new System.Text.RegularExpressions.Regex( - @"(?\d+)(?[gvp](.+)?)?", + @"^(?\d+)(?[gvp](.+)?)?", System.Text.RegularExpressions.RegexOptions.Compiled);