Browse Source

Use LastOrDefaultAsync for completion.

pull/464/head
Steven Kirk 11 years ago
parent
commit
6b99bcf30b
  1. 11
      src/Markup/Perspex.Markup/Data/ExpressionObserver.cs
  2. 4
      src/Perspex.Styling/Styling/ActivatedObservable.cs

11
src/Markup/Perspex.Markup/Data/ExpressionObserver.cs

@ -197,11 +197,11 @@ namespace Perspex.Markup.Data
if (_rootObservable != null) if (_rootObservable != null)
{ {
source = source.TakeUntil(Complete(_rootObservable)); source = source.TakeUntil(_rootObservable.LastOrDefaultAsync());
} }
else if (_update != null) else if (_update != null)
{ {
source = source.TakeUntil(Complete(_update)); source = source.TakeUntil(_update.LastOrDefaultAsync());
} }
var subscription = source.Subscribe(observer); var subscription = source.Subscribe(observer);
@ -232,13 +232,6 @@ namespace Perspex.Markup.Data
} }
} }
private static IObservable<Unit> Complete<T>(IObservable<T> input)
{
return Observable.Merge(
input.TakeLast(1).Select(_ => Unit.Default),
input.IsEmpty().Where(x => x).Select(_ => Unit.Default));
}
private void IncrementCount() private void IncrementCount()
{ {
if (_count++ == 0 && _node != null) if (_count++ == 0 && _node != null)

4
src/Perspex.Styling/Styling/ActivatedObservable.cs

@ -62,8 +62,8 @@ namespace Perspex.Styling
{ {
Contract.Requires<ArgumentNullException>(observer != null); Contract.Requires<ArgumentNullException>(observer != null);
var sourceCompleted = Source.TakeLast(1).Select(_ => Unit.Default); var sourceCompleted = Source.LastOrDefaultAsync().Select(_ => Unit.Default);
var activatorCompleted = Activator.TakeLast(1).Select(_ => Unit.Default); var activatorCompleted = Activator.LastOrDefaultAsync().Select(_ => Unit.Default);
var completed = sourceCompleted.Merge(activatorCompleted); var completed = sourceCompleted.Merge(activatorCompleted);
return Activator return Activator

Loading…
Cancel
Save