// Called from asynchronously from Renderer.OnCompletion ()
void HandleApply ()
{
Debug.WriteLine ("LivePreviewManager.HandleApply()");
var item = new SimpleHistoryItem (effect.Icon, effect.Name);
item.TakeSnapshotOfLayer (PintaCore.Layers.CurrentLayerIndex);
using (var ctx = new Cairo.Context (layer.Surface)) {
ctx.Save ();
ctx.AppendPath (PintaCore.Layers.SelectionPath);
ctx.FillRule = Cairo.FillRule.EvenOdd;
ctx.Clip ();
ctx.Operator = Cairo.Operator.Source;
ctx.SetSourceSurface (live_preview_surface, (int)layer.Offset.X, (int)layer.Offset.Y);
ctx.Paint ();
ctx.Restore ();
}
PintaCore.History.PushNewItem (item);
FireLivePreviewEndedEvent(RenderStatus.Completed, null);
live_preview_enabled = false;
PintaCore.Workspace.Invalidate (); //TODO keep track of dirty bounds.
CleanUp ();
}