void MainWindow::_SetToDiskAndPartition(partition_id disk, partition_id partition, partition_id parent) { //printf("MainWindow::_SetToDiskAndPartition(disk: %ld, partition: %ld, " // "parent: %ld)\n", disk, partition, parent); BDiskDevice* oldDisk = NULL; if (!fCurrentDisk || fCurrentDisk->ID() != disk) { oldDisk = fCurrentDisk; fCurrentDisk = NULL; if (disk >= 0) { BDiskDevice* newDisk = new BDiskDevice(); status_t ret = newDisk->SetTo(disk); if (ret < B_OK) { printf("error switching disks: %s\n", strerror(ret)); delete newDisk; } else fCurrentDisk = newDisk; } } fCurrentPartitionID = partition; fDiskView->SetDisk(fCurrentDisk, fCurrentPartitionID); _UpdateMenus(fCurrentDisk, fCurrentPartitionID, parent); delete oldDisk; }