From a2b12d1d0f19c87e97f5d605e4447e5ba7b317fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Thu, 9 Apr 2020 08:29:41 +0200 Subject: [PATCH] [CUERipper] Save metadata before UpdateDrive(s) Up to now, entered metadata was cleared and lost, when UpdateDrive() or UpdateDrives() was called after device change events. This happened for example in case of a DBT_DEVNODES_CHANGE event. Typical triggers for this event are often not even CD drive related, like insert/eject of USB sticks, disconnection or connection of a Bluetooth mouse etc. - In order to avoid loss of entered metadata in case of such events, save the data first before calling the methods UpdateDrive() or UpdateDrives(). - The entered metadata is now also saved, when a CD is ejected. - Fixes #20 --- CUERipper/frmCUERipper.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs index 9edbcc5..a102483 100644 --- a/CUERipper/frmCUERipper.cs +++ b/CUERipper/frmCUERipper.cs @@ -214,11 +214,21 @@ namespace CUERipper { int val = m.WParam.ToInt32(); if (val == DBT_DEVICEARRIVAL || val == DBT_DEVICEREMOVECOMPLETE) + { + // Save current metadata before clearing + if (data.selectedRelease != null) + data.selectedRelease.metadata.Save(); UpdateDrive(); + } else if (val == DBT_DEVNODES_CHANGED) { if (_workThread == null) + { + // Save current metadata before clearing + if (data.selectedRelease != null) + data.selectedRelease.metadata.Save(); UpdateDrives(); + } } } base.WndProc(ref m);