Skip to content

Commit b0290c4

Browse files
committed
Fix cancelling of loading taking too much time
1 parent ca8ed49 commit b0290c4

File tree

4 files changed

+25
-18
lines changed

4 files changed

+25
-18
lines changed

solution/GraphicalDebugging/ExpressionLoader.cs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ public static void Load(string name,
365365
exprs[0].Name, exprs[0].Type,
366366
delegate ()
367367
{
368-
return timeGuard.Update();
368+
timeGuard.ThrowOnCancel();
369369
});
370370
}
371371
else //if (exprs.Length > 1)
@@ -380,7 +380,7 @@ public static void Load(string name,
380380
exprs,
381381
delegate ()
382382
{
383-
return timeGuard.Update();
383+
timeGuard.ThrowOnCancel();
384384
});
385385
}
386386

@@ -596,7 +596,7 @@ abstract class DrawableLoader : Loader
596596
/// <summary>
597597
/// Callback function allowing to break loading of variable.
598598
/// </summary>
599-
public delegate bool LoadCallback();
599+
public delegate void LoadCallback();
600600

601601
/// <summary>
602602
/// Returns geometrical information of a Drawable.
@@ -819,7 +819,8 @@ protected ResultType LoadParsed(MemoryReader mreader, // should this be passed?
819819
}
820820
result.Add(p);
821821

822-
return callback();
822+
callback();
823+
return true;
823824
});
824825
return result;
825826
}
@@ -844,7 +845,10 @@ protected ResultType LoadMemory(MemoryReader mreader,
844845
delegate (double[] values)
845846
{
846847
if (dimension == 0 || values.Length % dimension != 0)
848+
{
849+
result = null;
847850
return false;
851+
}
848852
int size = dimension > 0
849853
? values.Length / dimension
850854
: 0;
@@ -856,7 +860,8 @@ protected ResultType LoadMemory(MemoryReader mreader,
856860
result.Add(p);
857861
}
858862

859-
return callback();
863+
callback();
864+
return true;
860865
}))
861866
{
862867
return result;
@@ -969,7 +974,8 @@ private ExpressionDrawer.DrawablesContainer LoadMemory(MemoryReader mreader, Deb
969974
result.Add(d);
970975
}
971976

972-
return callback();
977+
callback();
978+
return true;
973979
}))
974980
{
975981
return result;
@@ -1218,7 +1224,8 @@ private void LoadMemory(MemoryReader mreader, Debugger debugger,
12181224
{
12191225
foreach (double v in values)
12201226
list.Add(v);
1221-
return callback();
1227+
callback();
1228+
return true;
12221229
});
12231230

12241231
if (ok)
@@ -1248,7 +1255,8 @@ private void LoadParsed(MemoryReader mreader, Debugger debugger,
12481255
return false;
12491256
}
12501257
values.Add(value);
1251-
return callback();
1258+
callback();
1259+
return true;
12521260
});
12531261

12541262
if (ok)

solution/GraphicalDebugging/ExpressionLoader_Boost.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,7 +1294,8 @@ private bool LoadMemoryRecursive(MemoryReader mreader, Debugger debugger,
12941294
else
12951295
return false;
12961296

1297-
return callback();
1297+
callback();
1298+
return true;
12981299
}
12991300

13001301
private bool LoadParsedRecursive(MemoryReader mreader, Debugger debugger,
@@ -1338,7 +1339,8 @@ private bool LoadParsedRecursive(MemoryReader mreader, Debugger debugger,
13381339
return false;
13391340
}
13401341

1341-
return callback();
1342+
callback();
1343+
return true;
13421344
});
13431345

13441346
return ok;
@@ -1641,7 +1643,8 @@ public override ExpressionDrawer.IDrawable Load(MemoryReader mreader, Debugger d
16411643
if (turn == null)
16421644
return false;
16431645
turns.Add(turn);
1644-
return callback();
1646+
callback();
1647+
return true;
16451648
});
16461649
return ok
16471650
? new ExpressionDrawer.TurnsContainer(turns)

solution/GraphicalDebugging/ExpressionLoader_BoostGil.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,7 @@ public override ExpressionDrawer.IDrawable Load(MemoryReader mreader, Debugger d
148148

149149
// TODO: Checked per pixel. Too often?
150150
// But it's the same for geometries (ForEachMemoryBlock).
151-
if (! callback())
152-
return null;
151+
callback();
153152
}
154153
}
155154

solution/GraphicalDebugging/ExpressionLoader_Util.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public LoadTimeGuard(string variableName, long timeThreshold)
2727
stopWatch.Start();
2828
}
2929

30-
public bool Update()
30+
public void ThrowOnCancel()
3131
{
3232
if (stopWatch.ElapsedMilliseconds > timeThreshold)
3333
{
@@ -85,13 +85,10 @@ public bool Update()
8585
// This also means that the thread already finished
8686
// or will do it in the near future because window
8787
// closing shuts down the dispatcher.
88+
throw new Exception("Cancelled");
8889
}
89-
90-
return result;
9190
}
9291
}
93-
94-
return true;
9592
}
9693

9794
public void Reset()

0 commit comments

Comments
 (0)