Changeset 78398 in vbox
- Timestamp:
- May 6, 2019 6:03:31 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumEnumerator.cpp
r78397 r78398 22 22 #include "VBoxGlobal.h" 23 23 #include "UIMediumEnumerator.h" 24 #include "UIMessageCenter.h" 24 25 #include "UIThreadPool.h" 25 26 #include "UIVirtualBoxEventHandler.h" … … 392 393 LogRel2(("GUI: UIMediumEnumerator: OnMediumRegistered event received, Medium ID = {%s}, Medium type = {%d}, Registered = {%d}\n", 393 394 uMediumId.toString().toUtf8().constData(), enmMediumType, fRegistered)); 395 396 /* New medium registered: */ 397 if (fRegistered) 398 { 399 /* Make sure this medium isn't already cached: */ 400 if (!medium(uMediumId).isNull()) 401 { 402 LogRel2(("GUI: UIMediumEnumerator: Medium {%s} is cached already and will be enumerated!\n", 403 uMediumId.toString().toUtf8().constData())); 404 /// @todo is this valid case? 405 AssertFailed(); 406 407 /* Enumerate corresponding UIMedium: */ 408 createMediumEnumerationTask(m_media.value(uMediumId)); 409 } 410 else 411 { 412 /* Get VBox for temporary usage, it will cache the error info: */ 413 CVirtualBox comVBox = vboxGlobal().virtualBox(); 414 /* Open existing medium, this API can be used to open known medium as well, using ID as location for that: */ 415 CMedium comMedium = comVBox.OpenMedium(uMediumId.toString(), enmMediumType, KAccessMode_ReadWrite, false); 416 417 /* Show error message if necessary: */ 418 if (!comVBox.isOk()) 419 msgCenter().cannotOpenKnownMedium(comVBox, uMediumId); 420 else 421 { 422 /* Create new UIMedium: */ 423 const UIMedium guiMedium(comMedium, UIMediumDefs::mediumTypeToLocal(comMedium.GetDeviceType())); 424 const QUuid &uUIMediumKey = guiMedium.key(); 425 426 /* Cache corresponding UIMedium: */ 427 m_media.insert(uUIMediumKey, guiMedium); 428 LogRel2(("GUI: UIMediumEnumerator: Medium {%s} is now cached and will be enumerated..\n", 429 uUIMediumKey.toString().toUtf8().constData())); 430 431 /* And notify listeners: */ 432 emit sigMediumCreated(uUIMediumKey); 433 434 /* Enumerate corresponding UIMedium: */ 435 createMediumEnumerationTask(m_media.value(uMediumId)); 436 } 437 } 438 } 439 /* Old medium unregistered: */ 440 else 441 { 442 /* Make sure this medium is still cached: */ 443 if (medium(uMediumId).isNull()) 444 { 445 LogRel2(("GUI: UIMediumEnumerator: Medium {%s} was not currently cached!\n", 446 uMediumId.toString().toUtf8().constData())); 447 /// @todo is this a valid case? 448 AssertFailed(); 449 } 450 else 451 { 452 /* Forget corresponding UIMedium: */ 453 m_media.remove(uMediumId); 454 LogRel2(("GUI: UIMediumEnumerator: Medium {%s} is no more cached!\n", 455 uMediumId.toString().toUtf8().constData())); 456 457 /* And notify listeners: */ 458 emit sigMediumDeleted(uMediumId); 459 } 460 } 394 461 } 395 462
Note:
See TracChangeset
for help on using the changeset viewer.

