Module: wine Branch: master Commit: ab6fa810d7f36dc345e8946272043f85c34bf1d2 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=ab6fa810d7f36dc345e89462...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Oct 3 12:40:39 2006 +0200
explorer: Avoid repeated notifications on device removal.
---
programs/explorer/device.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/programs/explorer/device.c b/programs/explorer/device.c index 0b86b43..e3309fa 100644 --- a/programs/explorer/device.c +++ b/programs/explorer/device.c @@ -143,13 +143,14 @@ done: return drive; }
-static void set_mount_point( struct dos_drive *drive, const char *mount_point ) +static BOOL set_mount_point( struct dos_drive *drive, const char *mount_point ) { char *path, *p; struct stat path_st, mnt_st; + BOOL modified = FALSE;
- if (drive->drive == -1) return; - if (!(path = get_dosdevices_path())) return; + if (drive->drive == -1) return FALSE; + if (!(path = get_dosdevices_path())) return FALSE; p = path + strlen(path) - 3; *p = 'a' + drive->drive; p[2] = 0; @@ -162,11 +163,16 @@ static void set_mount_point( struct dos_ { unlink( path ); symlink( mount_point, path ); + modified = TRUE; } } - else unlink( path ); + else + { + if (unlink( path ) != -1) modified = TRUE; + }
HeapFree( GetProcessHeap(), 0, path ); + return modified; }
BOOL add_dos_device( const char *udi, const char *device, @@ -227,7 +233,7 @@ BOOL remove_dos_device( const char *udi
if (drive->drive != -1) { - set_mount_point( drive, "" ); + BOOL modified = set_mount_point( drive, "" );
/* clear the registry key too */ if (!RegOpenKeyA( HKEY_LOCAL_MACHINE, "Software\Wine\Drives", &hkey )) @@ -238,7 +244,7 @@ BOOL remove_dos_device( const char *udi RegCloseKey( hkey ); }
- send_notify( drive->drive, DBT_DEVICEREMOVECOMPLETE ); + if (modified) send_notify( drive->drive, DBT_DEVICEREMOVECOMPLETE ); }
list_remove( &drive->entry );