void graphicTimer1_Tick(object sender, EventArgs e)
{
//-------------------------------------------------
tickAccum += fastPlanInterval;
//Console.WriteLine("tickaccum:" + tickAccum.ToString());
//-------------------------------------------------
bool doCaretPlan = false;
if (tickAccum > caretBlinkInterval)
{
// Console.WriteLine("*********");
tickAccum = 0;//reset
doCaretPlan = true;
}
//-------------------------------------------------
int needUpdate = 0;
if (enableCaretBlink && doCaretPlan)
{
//-------------------------------------------------
//1. fast and animation plan
//-------------------------------------------------
MyIntervalTaskEventArgs args = GetTaskEventArgs();
int j = this.fastIntervalTaskList.Count;
if (j > 0)
{
for (int i = 0; i < j; ++i)
{
fastIntervalTaskList[i].InvokeHandler(args);
needUpdate |= args.NeedUpdate;
}
}
//-------------------------------------------------
//2. caret plan
//-------------------------------------------------
j = this.caretIntervalTaskList.Count;
for (int i = 0; i < j; ++i)
{
caretIntervalTaskList[i].InvokeHandler(args);
needUpdate |= args.NeedUpdate;
}
FreeTaskEventArgs(args);
}
else
{
int j = this.fastIntervalTaskList.Count;
MyIntervalTaskEventArgs args = GetTaskEventArgs();
if (j > 0)
{
for (int i = 0; i < j; ++i)
{
fastIntervalTaskList[i].InvokeHandler(args);
needUpdate |= args.NeedUpdate;
}
}
FreeTaskEventArgs(args);
}
if (needUpdate > 0)
{
this.rootgfx.PrepareRender();
this.rootgfx.FlushAccumGraphics();
}
}
Stack<MyIntervalTaskEventArgs> taskEventPools = new Stack<MyIntervalTaskEventArgs>();