[Mediaportal-svn] r22449 - branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper
Turn your PC into a very advanced MediaCenter/HTPC
Brought to you by:
gereonheitmann,
morpheus_xx
From: <tou...@de...> - 2009-04-29 19:43:54
|
Author: tourettes_ Date: 2009-04-29 19:43:39 +0000 (Wed, 29 Apr 2009) New Revision: 22449 Modified: branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/AutoPlay.cs branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/DeviceVolumeMonitor.cs Log: Fixed Mantis issue: 0002100: Insert notification is triggered too often Modified: branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/AutoPlay.cs =================================================================== --- branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/AutoPlay.cs 2009-04-29 19:41:42 UTC (rev 22448) +++ branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/AutoPlay.cs 2009-04-29 19:43:39 UTC (rev 22449) @@ -26,6 +26,7 @@ using System; using System.Collections; using System.IO; +using System.Windows.Forms; using MediaPortal.Configuration; using MediaPortal.GUI.Library; using MediaPortal.Player; @@ -48,6 +49,11 @@ private static ArrayList allfiles; + // a hidden window to allow us to listen to WndProc messages + // Winamp viz doesn't like when it receives notify that the WndProc handler has changed + private static NativeWindow _nativeWindow; + private static IntPtr _windowHandle; + private enum MediaType { UNKNOWN = 0, @@ -77,6 +83,11 @@ m_dvd = "No"; m_audiocd = "No"; allfiles = new ArrayList(); + + _nativeWindow = new NativeWindow(); + CreateParams cp = new CreateParams(); + _nativeWindow.CreateHandle(cp); + _windowHandle = _nativeWindow.Handle; } ~AutoPlay() @@ -115,7 +126,7 @@ private static void StartListeningForEvents() { - _deviceMonitor = new DeviceVolumeMonitor(GUIGraphicsContext.form.Handle); + _deviceMonitor = new DeviceVolumeMonitor(_windowHandle); _deviceMonitor.OnVolumeInserted += new DeviceVolumeAction(VolumeInserted); _deviceMonitor.OnVolumeRemoved += new DeviceVolumeAction(VolumeRemoved); _deviceMonitor.AsynchronousEvents = true; @@ -130,6 +141,9 @@ { if (_deviceMonitor != null) { + _deviceMonitor.Enabled = false; + _deviceMonitor.OnVolumeInserted -= new DeviceVolumeAction(VolumeInserted); + _deviceMonitor.OnVolumeRemoved -= new DeviceVolumeAction(VolumeRemoved); _deviceMonitor.Dispose(); } _deviceMonitor = null; Modified: branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/DeviceVolumeMonitor.cs =================================================================== --- branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/DeviceVolumeMonitor.cs 2009-04-29 19:41:42 UTC (rev 22448) +++ branches/Bugfix re-release 1.0.2/MediaPortal/Core/Ripper/DeviceVolumeMonitor.cs 2009-04-29 19:43:39 UTC (rev 22449) @@ -380,11 +380,7 @@ { if (fInternal.Handle != IntPtr.Zero) { - // handle should not be released as this is the handle for MediaPortal itself (just borrowing - // it for wndproc message purposes). Just nulling the reference and letting the garbage collector - // clean up is enough to free resources for device monitoring. - //fInternal.ReleaseHandle(); - + fInternal.ReleaseHandle(); fInternal = null; } } |