diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-06-16 16:00:50 +0200 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-06-16 16:00:50 +0200 |
| commit | 5115f379fc240b1250220910b14d69bb27a32c1e (patch) | |
| tree | 1818ebcf5f2f5bd2f9730d85391217fcd1038c92 /Samples/DebugLogAnalyzer/src/DbgEventWidget.cs | |
| parent | 58e1683bdbe1c169a1ab18b170283f8d171049a7 (diff) | |
using try/finally to ensure mutexes release
Diffstat (limited to 'Samples/DebugLogAnalyzer/src/DbgEventWidget.cs')
| -rw-r--r-- | Samples/DebugLogAnalyzer/src/DbgEventWidget.cs | 38 |
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) { |