Removed the ugly Get_Highest_Logical_Busy() from Device and added a

* include/Device.h,
  src/Device.cc,
  src/GParted_Core.cc,
  src/Win_GParted.cc: Removed the ugly Get_Highest_Logical_Busy() from Device and added a classvariable instead. This one is set in
  GParted_Core and used wherever needed. I also removed Device::busy, and used the new variable to check if a device is busy.
This commit is contained in:
Bart Hakvoort 2004-12-27 18:56:57 +00:00
parent 174f0cff77
commit e5d2cb0eb7
5 changed files with 19 additions and 29 deletions

View File

@ -1,3 +1,11 @@
2004-12-27 Bart Hakvoort <hakvoort@cvs.gnome.org>
* include/Device.h,
src/Device.cc,
src/GParted_Core.cc,
src/Win_GParted.cc: Removed the ugly Get_Highest_Logical_Busy() from Device and added a classvariable instead. This one is set in
GParted_Core and used wherever needed. I also removed Device::busy, and used the new variable to check if a device is busy.
2004-12-27 Bart Hakvoort <gparted@users.sf.net>
* Added cylsize to Device and made Operation contain a Device instead of only the path and lenght.

View File

@ -31,8 +31,7 @@ public:
~Device( ) ;
void Reset( ) ;
int Get_Highest_Logical_Busy( ) ;
std::vector<Partition> device_partitions ;
Sector length;
long heads ;
@ -44,7 +43,7 @@ public:
Glib::ustring realpath;
Glib::ustring disktype;
int max_prims ;
bool busy ;
int highest_busy ;
bool readonly ;
private:

View File

@ -31,25 +31,8 @@ void Device::Reset( )
length = 0 ;
heads = sectors = cylinders = cylsize = 0 ;
model = path = realpath = disktype = "" ;
max_prims = 0 ;
busy = readonly = false ;
}
int Device::Get_Highest_Logical_Busy( )
{
int highest_logic_busy = -1 ;
for ( unsigned int t = 0 ; t < device_partitions .size( ) ; t++ )
if ( device_partitions [ t ] .type == GParted::EXTENDED )
{
for ( unsigned int i = 0 ; i < device_partitions[ t ] .logicals .size( ) ; i++ )
if ( device_partitions[ t ] .logicals[ i ] .busy && device_partitions[ t ] .logicals[ i ] .partition_number > highest_logic_busy )
highest_logic_busy = device_partitions[ t ] .logicals[ i ] .partition_number ;
break ;
}
return highest_logic_busy ;
max_prims = highest_busy = 0 ;
readonly = false ;
}
Device::~Device( )

View File

@ -107,7 +107,7 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
set_device_partitions( temp_device ) ;
if ( temp_device .busy )
if ( temp_device .highest_busy )
{
temp_device .readonly = ! ped_disk_commit_to_os( disk ) ;
sleep( 1 ) ;//this sucks, but it seems that after the commit test, the paths are removed and added again (which takes time..)
@ -184,9 +184,9 @@ void GParted_Core::set_device_partitions( Device & device )
partition_temp .flags = Get_Flags( c_partition ) ;
if ( partition_temp .busy )
device .busy = true ;
if ( partition_temp .busy && partition_temp .partition_number > device .highest_busy )
device .highest_busy = partition_temp .partition_number ;
break ;
case PED_PARTITION_EXTENDED:

View File

@ -940,7 +940,7 @@ void Win_GParted::activate_new()
}
}
void Win_GParted::activate_delete()
void Win_GParted::activate_delete( )
{
//since logicals are *always* numbered from 5 to <last logical> there can be a shift in numbers after deletion.
//e.g. consider /dev/hda5 /dev/hda6 /dev/hda7. Now after removal of /dev/hda6, /dev/hda7 is renumbered to /dev/hda6
@ -948,7 +948,7 @@ void Win_GParted::activate_delete()
//it seems best to check for this and prohibit deletion with some explanation to the user.
if ( selected_partition .type == GParted::LOGICAL &&
selected_partition .status != GParted::STAT_NEW &&
selected_partition .partition_number < devices [ current_device ] .Get_Highest_Logical_Busy( ) )
selected_partition .partition_number < devices [ current_device ] .highest_busy )
{
str_temp = "<span weight=\"bold\" size=\"larger\">" ;
str_temp += _( "Unable to delete partition!") ;
@ -1156,7 +1156,7 @@ void Win_GParted::activate_apply( )
//find out if any of the involved devices is busy
bool any_busy = false ;
for ( unsigned int t = 0; t < devices .size( ) && ! any_busy; t++ )
if ( devices[ t ] .busy )
if ( devices[ t ] .highest_busy )
for (unsigned int i = 0; i < operations .size( ) && ! any_busy; i++ )
if ( operations[ i ] .device .path == devices[ t ] .path )
any_busy = true ;