protected override bool OnExposeEvent(Gdk.EventExpose evnt)
{
bool idle = incoming_track == null && current_track == null;
if (!Visible || !IsMapped || (idle && !CanRenderIdle))
{
return(true);
}
Cairo.Context cr = Gdk.CairoHelper.Create(evnt.Window);
foreach (Gdk.Rectangle damage in evnt.Region.GetRectangles())
{
cr.Rectangle(damage.X, damage.Y, damage.Width, damage.Height);
cr.Clip();
if (idle)
{
RenderIdle(cr);
}
else
{
RenderAnimation(cr);
}
cr.ResetClip();
}
CairoExtensions.DisposeContext(cr);
return(true);
}