Changeset 35907 in vbox
- Timestamp:
- Feb 9, 2011 11:20:31 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
-
include/VBox/VBoxGuestLib.h (modified) (1 diff)
-
include/VBox/VMMDev.h (modified) (2 diffs)
-
src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp (modified) (1 diff)
-
src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.h (modified) (1 diff)
-
src/VBox/Additions/WINNT/VBoxTray/VBoxTray.cpp (modified) (4 diffs)
-
src/VBox/Additions/common/VBoxGuest/VBoxGuest2.cpp (modified) (2 diffs)
-
src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAdditions.cpp (modified) (1 diff)
-
src/VBox/Additions/common/VBoxService/VBoxService.cpp (modified) (9 diffs)
-
src/VBox/Frontends/VBoxManage/VBoxManage.h (modified) (1 diff)
-
src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp (modified) (1 diff)
-
src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp (modified) (1 diff)
-
src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp (modified) (7 diffs)
-
src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp (modified) (2 diffs)
-
src/VBox/Main/idl/VirtualBox.xidl (modified) (7 diffs)
-
src/VBox/Main/include/GuestImpl.h (modified) (3 diffs)
-
src/VBox/Main/src-client/GuestImpl.cpp (modified) (6 diffs)
-
src/VBox/Main/src-client/VMMDevInterface.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/VBoxGuestLib.h
r35016 r35907 413 413 VBGLR3DECL(int) VbglR3WaitEvent(uint32_t fMask, uint32_t cMillies, uint32_t *pfEvents); 414 414 415 VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuest StatusFacility Facility, VBoxGuestStatusCurrentStatusCurrent, uint32_t uFlags);415 VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuestFacilityType Facility, VBoxGuestFacilityStatus StatusCurrent, uint32_t uFlags); 416 416 VBGLR3DECL(int) VbglR3GetAdditionsVersion(char **ppszVer, char **ppszRev); 417 417 VBGLR3DECL(int) VbglR3GetAdditionsInstallationPath(char **ppszPath); -
trunk/include/VBox/VMMDev.h
r35887 r35907 669 669 670 670 /** 671 * Guest statusfacility.672 * This needs to be kept in sync with AdditionsFacility of the Main API!671 * The guest facility. 672 * This needs to be kept in sync with AdditionsFacilityType of the Main API! 673 673 */ 674 674 typedef enum 675 675 { 676 VBoxGuestStatusFacility_Unknown = 0, 677 VBoxGuestStatusFacility_VBoxGuestDriver = 20, 678 VBoxGuestStatusFacility_VBoxService = 100, 679 VBoxGuestStatusFacility_VBoxTrayClient = 101, /* VBoxTray (Windows), VBoxClient (Linux, Unix). */ 680 VBoxGuestStatusFacility_All = 999, 681 VBoxGuestStatusFacility_SizeHack = 0x7fffffff 682 } VBoxGuestStatusFacility; 683 AssertCompileSize(VBoxGuestStatusFacility, 4); 676 VBoxGuestFacilityType_Unknown = 0, 677 VBoxGuestFacilityType_VBoxGuestDriver = 20, 678 VBoxGuestFacilityType_VBoxService = 100, 679 VBoxGuestFacilityType_VBoxTrayClient = 101, /* VBoxTray (Windows), VBoxClient (Linux, Unix). */ 680 VBoxGuestFacilityType_Seamless = 1000, 681 VBoxGuestFacilityType_Graphics = 1001, 682 VBoxGuestFacilityType_All = 0xfffffffe, 683 VBoxGuestFacilityType_SizeHack = 0x7fffffff 684 } VBoxGuestFacilityType; 685 AssertCompileSize(VBoxGuestFacilityType, 4); 684 686 685 687 686 688 /** 687 689 * The current guest status of a facility. 690 * This needs to be kept in sync with AdditionsFacilityStatus of the Main API! 688 691 */ 689 692 typedef enum 690 693 { 691 VBoxGuest StatusCurrent_Disabled= 0,692 VBoxGuest StatusCurrent_Inactive= 1,693 VBoxGuest StatusCurrent_Paused = 2,694 VBoxGuest StatusCurrent_PreInit = 20,695 VBoxGuest StatusCurrent_Init = 30,696 VBoxGuest StatusCurrent_Active = 50,697 VBoxGuest StatusCurrent_Terminating = 100,698 VBoxGuest StatusCurrent_Terminated = 101,699 VBoxGuest StatusCurrent_Unknown = 999,700 VBoxGuest StatusCurrent_SizeHack = 0x7fffffff701 } VBoxGuest StatusCurrent;702 AssertCompileSize(VBoxGuest StatusCurrent, 4);694 VBoxGuestFacilityStatus_Inactive = 0, 695 VBoxGuestFacilityStatus_Paused = 1, 696 VBoxGuestFacilityStatus_PreInit = 20, 697 VBoxGuestFacilityStatus_Init = 30, 698 VBoxGuestFacilityStatus_Active = 50, 699 VBoxGuestFacilityStatus_Terminating = 100, 700 VBoxGuestFacilityStatus_Terminated = 101, 701 VBoxGuestFacilityStatus_Failed = 800, 702 VBoxGuestFacilityStatus_Unknown = 999, 703 VBoxGuestFacilityStatus_SizeHack = 0x7fffffff 704 } VBoxGuestFacilityStatus; 705 AssertCompileSize(VBoxGuestFacilityStatus, 4); 703 706 704 707 /** … … 710 713 { 711 714 /** Facility the status is indicated for. */ 712 VBoxGuest StatusFacilityfacility;715 VBoxGuestFacilityType facility; 713 716 /** Current guest status. */ 714 VBoxGuest StatusCurrentstatus;717 VBoxGuestFacilityStatus status; 715 718 /** Flags, not used at the moment. */ 716 719 uint32_t flags; -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp
r35887 r35907 28 28 29 29 30 int hlpReportStatus(VBoxGuest StatusCurrentstatusCurrent)31 { 32 int rc = VbglR3ReportAdditionsStatus(VBoxGuest StatusFacility_VBoxTrayClient,30 int hlpReportStatus(VBoxGuestFacilityStatus statusCurrent) 31 { 32 int rc = VbglR3ReportAdditionsStatus(VBoxGuestFacilityType_VBoxTrayClient, 33 33 statusCurrent, 34 34 0 /* Flags */); -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.h
r35863 r35907 27 27 #endif /* !DEBUG_DISPLAY_CHANGE */ 28 28 29 extern int hlpReportStatus(VBoxGuest StatusCurrentstatusCurrent);29 extern int hlpReportStatus(VBoxGuestFacilityStatus statusCurrent); 30 30 extern void hlpReloadCursor(void); 31 31 extern void hlpResizeRect(RECTL *paRects, unsigned nRects, unsigned uPrimary, unsigned uResized, int iNewWidth, int iNewHeight); -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxTray.cpp
r35863 r35907 583 583 { 584 584 /* Report the host that we're up and running! */ 585 rc = hlpReportStatus(VBoxGuestStatusCurrent_Active);585 hlpReportStatus(VBoxGuestFacilityStatus_Active); 586 586 } 587 587 } … … 685 685 } 686 686 687 if (RT_FAILURE(rc))688 {689 CloseHandle (hMutexAppRunning);690 hMutexAppRunning = NULL;691 return 1;692 }693 694 687 if (RT_SUCCESS(rc)) 695 688 { … … 697 690 ghInstance = hInstance; 698 691 699 rc = hlpReportStatus(VBoxGuestStatusCurrent_Init); 692 hlpReportStatus(VBoxGuestFacilityStatus_Init); 693 rc = vboxTrayCreateToolWindow(); 700 694 if (RT_SUCCESS(rc)) 701 695 { 702 rc = vboxTray CreateToolWindow();696 rc = vboxTraySetupSeamless(); 703 697 if (RT_SUCCESS(rc)) 704 698 { 705 rc = vboxTraySetupSeamless(); 699 Log(("VBoxTray: Init successful\n")); 700 rc = vboxTrayServiceMain(); 706 701 if (RT_SUCCESS(rc)) 707 { 708 Log(("VBoxTray: Init successful\n")); 709 rc = vboxTrayServiceMain(); 710 hlpReportStatus(VBoxGuestStatusCurrent_Terminating); 711 vboxTrayShutdownSeamless(); 712 } 713 vboxTrayDestroyToolWindow(); 714 } 715 rc = hlpReportStatus(VBoxGuestStatusCurrent_Inactive); 716 } 717 } 718 else 719 Log(("VBoxTray: Could not report VBoxTray status \"Init\", rc=%Rrc\n", rc)); 702 hlpReportStatus(VBoxGuestFacilityStatus_Terminating); 703 vboxTrayShutdownSeamless(); 704 } 705 vboxTrayDestroyToolWindow(); 706 } 707 if (RT_SUCCESS(rc)) 708 hlpReportStatus(VBoxGuestFacilityStatus_Terminated); 709 } 710 720 711 if (RT_FAILURE(rc)) 721 LogRel(("VBoxTray: Error while starting, rc=%Rrc\n", rc)); 712 { 713 LogRel(("VBoxTray: Error while starting, rc=%Rrc\n", rc)); 714 hlpReportStatus(VBoxGuestFacilityStatus_Failed); 715 } 722 716 LogRel(("VBoxTray: Ended\n")); 717 vboxTrayCloseBaseDriver(); 723 718 724 719 /* Release instance mutex. */ … … 730 725 731 726 VbglR3Term(); 732 return 0;727 return RT_SUCCESS(rc) ? 0 : 1; 733 728 } 734 729 -
trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest2.cpp
r32435 r35907 5 5 6 6 /* 7 * Copyright (C) 201 0Oracle Corporation7 * Copyright (C) 2011 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 116 116 if (RT_SUCCESS(rc)) 117 117 { 118 pReq2->guestStatus.facility = VBoxGuest StatusFacility_VBoxGuestDriver;118 pReq2->guestStatus.facility = VBoxGuestFacilityType_VBoxGuestDriver; 119 119 pReq2->guestStatus.status = fActive ? 120 VBoxGuest StatusCurrent_Active121 : VBoxGuest StatusCurrent_Inactive;120 VBoxGuestFacilityStatus_Active 121 : VBoxGuestFacilityStatus_Inactive; 122 122 pReq2->guestStatus.flags = 0; 123 123 rc = VbglGRPerform(&pReq2->header); -
trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAdditions.cpp
r30959 r35907 147 147 * @param fReserved Reserved for future use (what?). 148 148 */ 149 VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuest StatusFacilityenmFacility,150 VBoxGuest StatusCurrentenmStatusCurrent,149 VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuestFacilityType enmFacility, 150 VBoxGuestFacilityStatus enmStatusCurrent, 151 151 uint32_t fReserved) 152 152 { -
trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp
r35080 r35907 229 229 230 230 /** 231 * Reports the current VBoxService status to the host. 232 * 233 * @return IPRT status code. 234 * @param enmStatus Status to report to the host. 235 */ 236 int VBoxServiceReportStatus(VBoxGuestFacilityStatus enmStatus) 237 { 238 /* Report the host that we're up and running! */ 239 int rc = VbglR3ReportAdditionsStatus(VBoxGuestFacilityType_VBoxService, 240 enmStatus, 0 /* Flags */); 241 if (RT_FAILURE(rc)) 242 VBoxServiceError("Could not report VBoxService status (%u), rc=%Rrc\n", enmStatus, rc); 243 return rc; 244 } 245 246 247 /** 231 248 * Gets a 32-bit value argument. 232 249 * … … 310 327 { 311 328 int rc; 329 330 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Init); 312 331 313 332 /* … … 372 391 VBoxServiceVerbose(1, "All services started.\n"); 373 392 else 393 { 374 394 VBoxServiceError("An error occcurred while the services!\n"); 395 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Failed); 396 } 375 397 return rc; 376 398 } … … 386 408 { 387 409 int rc = VINF_SUCCESS; 410 411 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Terminating); 388 412 389 413 /* … … 445 469 446 470 VBoxServiceVerbose(2, "Stopping services returned: rc=%Rrc\n", rc); 471 VBoxServiceReportStatus(RT_SUCCESS(rc) 472 ? VBoxGuestFacilityStatus_Paused : VBoxGuestFacilityStatus_Failed); 447 473 return rc; 448 474 } … … 456 482 int rc; 457 483 458 /* Report the host that we're up and running! */ 459 rc = VbglR3ReportAdditionsStatus(VBoxGuestStatusFacility_VBoxService, 460 VBoxGuestStatusCurrent_Active, 461 0 /* Flags */); 462 if (RT_FAILURE(rc)) 463 VBoxServiceError("Could not report facility (%u) status %u, rc=%Rrc\n", 464 VBoxGuestStatusFacility_VBoxService, VBoxGuestStatusCurrent_Active, rc); 484 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Active); 465 485 466 486 #ifdef RT_OS_WINDOWS … … 557 577 #endif 558 578 579 VBoxServiceReportStatus(VBoxGuestFacilityStatus_PreInit); 580 559 581 /* 560 582 * Do pre-init of services. … … 564 586 rc = g_aServices[j].pDesc->pfnPreInit(); 565 587 if (RT_FAILURE(rc)) 588 { 589 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Failed); 566 590 return VBoxServiceError("Service '%s' failed pre-init: %Rrc\n", g_aServices[j].pDesc->pszName, rc); 591 } 567 592 } 568 593 #ifdef RT_OS_WINDOWS … … 768 793 769 794 VBoxServiceVerbose(0, "Ended.\n"); 795 VBoxServiceReportStatus(VBoxGuestFacilityStatus_Terminated); 770 796 return rcExit; 771 797 } -
trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
r35766 r35907 197 197 VMINFO_DETAILS details = VMINFO_NONE, 198 198 ComPtr <IConsole> console = ComPtr<IConsole>()); 199 const char * stateToName(MachineState_T machineState, bool fShort);199 const char *machineStateToName(MachineState_T machineState, bool fShort); 200 200 201 201 /* VBoxManageList.cpp */ -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
r35764 r35907 191 191 { 192 192 RTMsgError("Machine in invalid state %d -- %s\n", 193 machineState, stateToName(machineState, false));193 machineState, machineStateToName(machineState, false)); 194 194 break; 195 195 } -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
r35832 r35907 257 257 { 258 258 RTMsgError("Machine \"%s\" is not running (currently %s)!\n", 259 pszNameOrId, stateToName(machineState, false));259 pszNameOrId, machineStateToName(machineState, false)); 260 260 return VERR_VM_INVALID_VM_STATE; 261 261 } -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
r35892 r35907 5 5 6 6 /* 7 * Copyright (C) 2006-201 0Oracle Corporation7 * Copyright (C) 2006-2011 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 111 111 } 112 112 113 const char * stateToName(MachineState_T machineState, bool fShort)113 const char *machineStateToName(MachineState_T machineState, bool fShort) 114 114 { 115 115 switch (machineState) … … 156 156 return fShort ? "settingup" : "setting up"; 157 157 default: 158 return "unknown"; 159 } 158 break; 159 } 160 return "unknown"; 161 } 162 163 const char *facilityStateToName(AdditionsFacilityStatus_T faStatus, bool fShort) 164 { 165 switch (faStatus) 166 { 167 case AdditionsFacilityStatus_Inactive: 168 return fShort ? "inactive" : "not active"; 169 case AdditionsFacilityStatus_Paused: 170 return "paused"; 171 case AdditionsFacilityStatus_PreInit: 172 return fShort ? "preinit" : "pre-initializing"; 173 case AdditionsFacilityStatus_Init: 174 return fShort ? "init" : "initializing"; 175 case AdditionsFacilityStatus_Active: 176 return fShort ? "active" : "active/running"; 177 case AdditionsFacilityStatus_Terminating: 178 return "terminating"; 179 case AdditionsFacilityStatus_Terminated: 180 return "terminated"; 181 case AdditionsFacilityStatus_Failed: 182 return "failed"; 183 case AdditionsFacilityStatus_Unknown: 184 default: 185 break; 186 } 187 return "unknown"; 160 188 } 161 189 … … 568 596 MachineState_T machineState; 569 597 rc = machine->COMGETTER(State)(&machineState); 570 const char *pszState = stateToName(machineState, details == VMINFO_MACHINEREADABLE /*=fShort*/);598 const char *pszState = machineStateToName(machineState, details == VMINFO_MACHINEREADABLE /*=fShort*/); 571 599 572 600 LONG64 stateSince; … … 2070 2098 else 2071 2099 RTPrintf("Guest driver: %u (last update: %s)\n", 2072 fa Status, szLastUpdated);2100 facilityStateToName(faStatus, false /* No short naming */), szLastUpdated); 2073 2101 } 2074 2102 … … 2081 2109 faStatus, lLastUpdatedMS); 2082 2110 else 2083 RTPrintf("VBoxService: % u(last update: %s)\n",2084 fa Status, szLastUpdated);2111 RTPrintf("VBoxService: %s (last update: %s)\n", 2112 facilityStateToName(faStatus, false /* No short naming */), szLastUpdated); 2085 2113 } 2086 2114 … … 2091 2119 if (details == VMINFO_MACHINEREADABLE) 2092 2120 RTPrintf("GuestAdditionsFacilityStatusVBoxTrayClient=%u,%ld\n", 2093 fa Status, lLastUpdatedMS);2121 facilityStateToName(faStatus, false /* No short naming */), lLastUpdatedMS); 2094 2122 else 2095 2123 RTPrintf("VBoxTray / VBoxClient: %u (last update: %s)\n", -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r35761 r35907 7 7 8 8 /* 9 * Copyright (C) 201 0Oracle Corporation9 * Copyright (C) 2011 Oracle Corporation 10 10 * 11 11 * This file is part of VirtualBox Open Source Edition (OSE), as … … 610 610 /* Variable flags: */ 611 611 ULONG ulGuestAdditionsRunLevel = guest.GetAdditionsRunLevel(); 612 bool fIsGuestSupportsGraphics = guest.GetSupportsGraphics(); 613 bool fIsGuestSupportsSeamless = guest.GetSupportsSeamless(); 614 612 LONG64 lLastUpdatedIgnored; 613 bool fIsGuestSupportsGraphics = guest.GetFacilityStatus(KAdditionsFacilityType_Graphics, lLastUpdatedIgnored) 614 == AdditionsFacilityStatus_Active; 615 bool fIsGuestSupportsSeamless = guest.GetFacilityStatus(KAdditionsFacilityType_Seamless, lLastUpdatedIgnored) 616 == AdditionsFacilityStatus_Active; 615 617 /* Check if something had changed: */ 616 618 if (m_ulGuestAdditionsRunLevel != ulGuestAdditionsRunLevel || -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r35903 r35907 7882 7882 <enum 7883 7883 name="AdditionsFacilityType" 7884 uuid=" bcf4f5e7-86d6-4b8c-99cd-449a79114fb4"7884 uuid="98f7f957-89fb-49b6-a3b1-31e3285eb1d8" 7885 7885 > 7886 7886 <desc> … … 7900 7900 <desc>VirtualBox desktop integration (VBoxTray on Windows, VBoxClient on non-Windows).</desc> 7901 7901 </const> 7902 <const name="All" value="999"> 7902 <const name="Seamless" value="1000"> 7903 <desc>Seamless guest desktop integration.</desc> 7904 </const> 7905 <const name="Graphics" value="1100"> 7906 <desc>Guest graphics mode. If not enabled, seamless rendering will not work, resize hints 7907 are not immediately acted on and guest display resizes are probably not initiated by 7908 the guest additions. 7909 </desc> 7910 </const> 7911 <const name="All" value="2147483646"> 7903 7912 <desc>All facilities selected.</desc> 7904 7913 </const> … … 7907 7916 <enum 7908 7917 name="AdditionsFacilityStatus" 7909 uuid=" 730a42a1-dac6-4194-b394-744a5ea487f3"7918 uuid="ce06f9e1-394e-4fe9-9368-5a88c567dbde" 7910 7919 > 7911 7920 <desc> … … 7913 7922 </desc> 7914 7923 7915 <const name="Disabled" value="0"> 7916 <desc>Facility is disabled.</desc> 7917 </const> 7918 <const name="Inactive" value="1"> 7919 <desc>Facility is enabled but inactive.</desc> 7920 </const> 7921 <const name="Paused" value="2"> 7924 <const name="Inactive" value="0"> 7925 <desc>Facility is not active.</desc> 7926 </const> 7927 <const name="Paused" value="1"> 7922 7928 <desc>Facility has been paused.</desc> 7923 7929 </const> … … 8071 8077 <interface 8072 8078 name="IGuest" extends="$unknown" 8073 uuid=" 09c2e2e0-f6f9-45ec-91a1-aaab3fad9f1f"8079 uuid="4db4f806-0a20-4772-9419-14563b662f93" 8074 8080 wsmap="managed" 8075 8081 > … … 8112 8118 </attribute> 8113 8119 8114 <attribute name="supportsSeamless" type="boolean" readonly="yes">8115 <desc>8116 Flag whether seamless guest display rendering (seamless desktop8117 integration) is supported.8118 </desc>8119 </attribute>8120 8121 <attribute name="supportsGraphics" type="boolean" readonly="yes">8122 <desc>8123 Flag whether the guest is in graphics mode. If it is not, then8124 seamless rendering will not work, resize hints are not immediately8125 acted on and guest display resizes are probably not initiated by8126 the guest additions.8127 </desc>8128 </attribute>8129 8130 8120 <attribute name="memoryBalloonSize" type="unsigned long"> 8131 8121 <desc>Guest system memory balloon size in megabytes (transient property).</desc> … … 8189 8179 </param> 8190 8180 <param name="timestamp" type="long long" dir="out"> 8191 <desc>Timestamp (in ms) of last status update of this facilityseen by the host.</desc>8181 <desc>Timestamp (in ms) of last status update seen by the host.</desc> 8192 8182 </param> 8193 8183 <param name="status" type="AdditionsFacilityStatus" dir="return"> -
trunk/src/VBox/Main/include/GuestImpl.h
r35890 r35907 76 76 STDMETHOD(COMGETTER(AdditionsRunLevel)) (AdditionsRunLevelType_T *aRunLevel); 77 77 STDMETHOD(COMGETTER(AdditionsVersion)) (BSTR *aAdditionsVersion); 78 /** @todo Remove later by replacing it by AdditionsFeatureAvailable(). */79 STDMETHOD(COMGETTER(SupportsSeamless)) (BOOL *aSupportsSeamless);80 STDMETHOD(COMGETTER(SupportsGraphics)) (BOOL *aSupportsGraphics);81 #if 082 /** @todo Will replace SupportsSeamless, SupportsGraphics, ... */83 STDMETHOD(COMGETTER(AdditionsFeatureAvailable)) (LONG64 aFeature, BOOL *aActive, BOOL *aAvailable);84 #endif85 78 STDMETHOD(COMGETTER(MemoryBalloonSize)) (ULONG *aMemoryBalloonSize); 86 79 STDMETHOD(COMSETTER(MemoryBalloonSize)) (ULONG aMemoryBalloonSize); … … 116 109 void setAdditionsInfo(Bstr aInterfaceVersion, VBOXOSTYPE aOsType); 117 110 void setAdditionsInfo2(Bstr aAdditionsVersion, Bstr aVersionName, Bstr aRevision); 118 void setAdditionsStatus(VBoxGuestStatusFacility enmFacility, VBoxGuestStatusCurrent enmStatus, ULONG aFlags); 111 bool facilityIsActive(VBoxGuestFacilityType enmFacility); 112 void updateFacility(VBoxGuestFacilityType enmFacility, VBoxGuestFacilityStatus enmStatus); 113 void setAdditionsStatus(VBoxGuestFacilityType enmFacility, VBoxGuestFacilityStatus enmStatus, ULONG aFlags); 119 114 void setSupportedFeatures(uint32_t aCaps); 120 115 HRESULT setStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal); … … 195 190 struct Data 196 191 { 197 Data() : mAdditionsRunLevel (AdditionsRunLevelType_None), 198 mSupportsSeamless (FALSE), 199 mSupportsGraphics (FALSE) {} 192 Data() : mAdditionsRunLevel (AdditionsRunLevelType_None) {} 200 193 201 194 Bstr mOSTypeId; 202 203 195 FacilityMap mFacilityMap; 204 196 AdditionsRunLevelType_T mAdditionsRunLevel; 205 197 Bstr mAdditionsVersion; 206 198 Bstr mInterfaceVersion; 207 BOOL mSupportsSeamless;208 BOOL mSupportsGraphics;209 199 }; 210 200 -
trunk/src/VBox/Main/src-client/GuestImpl.cpp
r35890 r35907 237 237 } 238 238 239 STDMETHODIMP Guest::COMGETTER(SupportsSeamless) (BOOL *aSupportsSeamless)240 {241 CheckComArgOutPointerValid(aSupportsSeamless);242 243 AutoCaller autoCaller(this);244 if (FAILED(autoCaller.rc())) return autoCaller.rc();245 246 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);247 248 *aSupportsSeamless = mData.mSupportsSeamless;249 250 return S_OK;251 }252 253 STDMETHODIMP Guest::COMGETTER(SupportsGraphics) (BOOL *aSupportsGraphics)254 {255 CheckComArgOutPointerValid(aSupportsGraphics);256 257 AutoCaller autoCaller(this);258 if (FAILED(autoCaller.rc())) return autoCaller.rc();259 260 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);261 262 *aSupportsGraphics = mData.mSupportsGraphics;263 264 return S_OK;265 }266 267 239 BOOL Guest::isPageFusionEnabled() 268 240 { … … 585 557 /* 586 558 * Older Additions didn't have this finer grained capability bit, 587 * so enable it by default. Newer Additions will not enable this here559 * so enable it by default. Newer Additions will not enable this here 588 560 * and use the setSupportedFeatures function instead. 589 561 */ 590 mData.mSupportsGraphics = mData.mAdditionsRunLevel > AdditionsRunLevelType_None; 562 updateFacility(VBoxGuestFacilityType_Graphics, facilityIsActive(VBoxGuestFacilityType_VBoxGuestDriver) ? 563 VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive); 591 564 592 565 /* … … 622 595 } 623 596 597 bool Guest::facilityIsActive(VBoxGuestFacilityType enmFacility) 598 { 599 return mData.mFacilityMap[(AdditionsFacilityType_T)enmFacility].curStatus == AdditionsFacilityStatus_Active; 600 } 601 602 void Guest::updateFacility(VBoxGuestFacilityType enmFacility, VBoxGuestFacilityStatus enmStatus) 603 { 604 Assert(enmFacility < UINT32_MAX); 605 FacilityData *pData = &mData.mFacilityMap[(AdditionsFacilityType_T)enmFacility]; 606 AssertPtr(pData); 607 608 RTTimeNow(&pData->tsLastUpdated); 609 pData->curStatus = (AdditionsFacilityStatus_T)enmStatus; 610 611 LogFlowFunc(("Setting guest facility %u = %u (%u)\n", 612 enmFacility, pData->curStatus, pData->tsLastUpdated)); 613 } 614 624 615 /** 625 616 * Sets the status of a certain Guest Additions facility. 626 617 * Gets called by vmmdevUpdateGuestStatus. 627 618 * 628 * @param enmFacility 629 * @param enmStatus 619 * @param enmFacility Facility to set the status for. 620 * @param enmStatus Actual status to set. 630 621 * @param aFlags 631 622 */ 632 void Guest::setAdditionsStatus(VBoxGuest StatusFacility enmFacility, VBoxGuestStatusCurrentenmStatus, ULONG aFlags)623 void Guest::setAdditionsStatus(VBoxGuestFacilityType enmFacility, VBoxGuestFacilityStatus enmStatus, ULONG aFlags) 633 624 { 634 625 AutoCaller autoCaller(this); … … 642 633 643 634 /* First check for disabled status. */ 644 uint32_t uCurFacility = enmFacility + (enmStatus == VBoxGuestStatusCurrent_Active ? 0 : -1); 645 if ( enmFacility < VBoxGuestStatusFacility_VBoxGuestDriver 646 || ( enmFacility == VBoxGuestStatusFacility_All 647 && ( enmStatus == VBoxGuestStatusCurrent_Inactive 648 || enmStatus == VBoxGuestStatusCurrent_Disabled 649 ) 650 ) 635 uint32_t uCurFacility = enmFacility + (enmStatus == VBoxGuestFacilityStatus_Active ? 0 : -1); 636 if ( enmFacility < VBoxGuestFacilityType_VBoxGuestDriver 637 || ( enmFacility == VBoxGuestFacilityType_All 638 && enmStatus == VBoxGuestFacilityStatus_Inactive) 651 639 ) 652 640 { 653 641 mData.mAdditionsRunLevel = AdditionsRunLevelType_None; 654 642 } 655 else if (uCurFacility >= VBoxGuest StatusFacility_VBoxTrayClient)643 else if (uCurFacility >= VBoxGuestFacilityType_VBoxTrayClient) 656 644 { 657 645 mData.mAdditionsRunLevel = AdditionsRunLevelType_Desktop; 658 646 } 659 else if (uCurFacility >= VBoxGuest StatusFacility_VBoxService)647 else if (uCurFacility >= VBoxGuestFacilityType_VBoxService) 660 648 { 661 649 mData.mAdditionsRunLevel = AdditionsRunLevelType_Userland; 662 650 } 663 else if (uCurFacility >= VBoxGuest StatusFacility_VBoxGuestDriver)651 else if (uCurFacility >= VBoxGuestFacilityType_VBoxGuestDriver) 664 652 { 665 653 mData.mAdditionsRunLevel = AdditionsRunLevelType_System; … … 673 661 if (enmFacility) 674 662 { 675 Assert(enmFacility < UINT32_MAX); 676 FacilityData *pData = &mData.mFacilityMap[(AdditionsFacilityType_T)enmFacility]; 677 AssertPtr(pData); 678 679 RTTimeNow(&pData->tsLastUpdated); 680 pData->curStatus = (AdditionsFacilityStatus_T)enmStatus; 681 682 LogFlowFunc(("Setting guest facility %u = %u (%u)\n", 683 enmFacility, pData->curStatus, pData->tsLastUpdated)); 663 if (enmFacility == VBoxGuestFacilityType_All) 664 { 665 FacilityMapIter it = mData.mFacilityMap.begin(); 666 while (it != mData.mFacilityMap.end()) 667 { 668 updateFacility((VBoxGuestFacilityType)it->first, enmStatus); 669 it++; 670 } 671 } 672 else /* Update one facility only. */ 673 updateFacility(enmFacility, enmStatus); 684 674 } 685 675 } … … 697 687 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 698 688 699 mData.mSupportsSeamless = (aCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS); 689 updateFacility(VBoxGuestFacilityType_Seamless, aCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS ? 690 VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive); 700 691 /** @todo Add VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING */ 701 mData.mSupportsGraphics = (aCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS); 692 updateFacility(VBoxGuestFacilityType_Graphics, aCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? 693 VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive); 702 694 } 703 695 /* vi: set tabstop=4 shiftwidth=4 expandtab: */ -
trunk/src/VBox/Main/src-client/VMMDevInterface.cpp
r35888 r35907 233 233 guest->setAdditionsInfo(Bstr(), guestInfo->osType); /* Clear interface version + OS type. */ 234 234 guest->setAdditionsInfo2(Bstr(), Bstr(), Bstr()); /* Clear Guest Additions version. */ 235 guest->setAdditionsStatus(VBoxGuest StatusFacility_All,236 VBoxGuest StatusCurrent_Inactive,235 guest->setAdditionsStatus(VBoxGuestFacilityType_All, 236 VBoxGuestFacilityStatus_Inactive, 237 237 0); /* Flags; not used. */ 238 238 pConsole->onAdditionsStateChange();
Note:
See TracChangeset
for help on using the changeset viewer.

