aboutsummaryrefslogtreecommitdiffstatsci
path: root/Samples/DebugLogAnalyzer/src/DbgEventWidget.cs
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-06-16 16:00:50 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-06-16 16:00:50 +0200
commit5115f379fc240b1250220910b14d69bb27a32c1e (patch)
tree1818ebcf5f2f5bd2f9730d85391217fcd1038c92 /Samples/DebugLogAnalyzer/src/DbgEventWidget.cs
parent58e1683bdbe1c169a1ab18b170283f8d171049a7 (diff)
using try/finally to ensure mutexes release
Diffstat (limited to 'Samples/DebugLogAnalyzer/src/DbgEventWidget.cs')
-rw-r--r--Samples/DebugLogAnalyzer/src/DbgEventWidget.cs38
1 files changed, 23 insertions, 15 deletions
diff --git a/Samples/DebugLogAnalyzer/src/DbgEventWidget.cs b/Samples/DebugLogAnalyzer/src/DbgEventWidget.cs
index 6af3f6df..b369d248 100644
--- a/Samples/DebugLogAnalyzer/src/DbgEventWidget.cs
+++ b/Samples/DebugLogAnalyzer/src/DbgEventWidget.cs
@@ -30,12 +30,15 @@ namespace Crow
long ticksPerPixel;
double pixelPerTick;
+ object dataMutex = new object();
+
public DbgEvent Event {
get => evt;
set {
if (evt == value)
return;
- evt = value;
+ lock (dataMutex)
+ evt = value;
updatePixelPerTicks ();
NotifyValueChangedAuto (evt);
RegisterForRedraw ();
@@ -46,6 +49,8 @@ namespace Crow
private set {
if (hoverEvt == value)
return;
+ lock (dataMutex)
+ evt = value;
hoverEvt = value;
NotifyValueChangedAuto (hoverEvt);
}
@@ -83,24 +88,27 @@ namespace Crow
protected override void onDraw (Context gr)
{
- if (Event == null) {
- base.onDraw (gr);
- return;
- }
+ lock (dataMutex) {
+
+ if (Event == null) {
+ base.onDraw (gr);
+ return;
+ }
- gr.LineWidth = 1;
- gr.SetDash (new double [] { 1.0, 3.0 }, 0);
+ gr.LineWidth = 1;
+ gr.SetDash (new double [] { 1.0, 3.0 }, 0);
- Rectangle cb = ClientRectangle;
+ Rectangle cb = ClientRectangle;
- if (Event.Duration == 0) {
- gr.SetSource (Event.Color);
- gr.Rectangle (cb);
- gr.Fill ();
- return;
- }
+ if (Event.Duration == 0) {
+ gr.SetSource (Event.Color);
+ gr.Rectangle (cb);
+ gr.Fill ();
+ return;
+ }
- drawEvent (gr, cb.Height, Event);
+ drawEvent (gr, cb.Height, Event);
+ }
}
void drawEvent (Context ctx, int h, DbgEvent dbge)
{