Changeset 41925 in vbox
- Timestamp:
- Jun 27, 2012 2:04:09 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78790
- Location:
- trunk/src/VBox
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
r41885 r41925 162 162 163 163 CHECK_ERROR_BREAK(sessionMachine, COMSETTER(CPUExecutionCap)(n)); 164 } 165 else if (!strcmp(a->argv[1], "clipboard")) 166 { 167 if (a->argc <= 1 + 1) 168 { 169 errorArgument("Missing argument to '%s'. Expected clipboard mode.", a->argv[1]); 170 rc = E_FAIL; 171 break; 172 } 173 174 ClipboardMode_T mode; 175 if (!strcmp(a->argv[2], "disabled")) 176 mode = ClipboardMode_Disabled; 177 else if (!strcmp(a->argv[2], "hosttoguest")) 178 mode = ClipboardMode_HostToGuest; 179 else if (!strcmp(a->argv[2], "guesttohost")) 180 mode = ClipboardMode_GuestToHost; 181 else if (!strcmp(a->argv[2], "bidirectional")) 182 mode = ClipboardMode_Bidirectional; 183 else 184 { 185 errorArgument("Invalid '%s' argument '%s'.", a->argv[1], a->argv[2]); 186 rc = E_FAIL; 187 } 188 if (SUCCEEDED(rc)) 189 { 190 CHECK_ERROR_BREAK(sessionMachine, COMSETTER(ClipboardMode)(mode)); 191 } 164 192 } 165 193 else if (!strcmp(a->argv[1], "poweroff")) -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
r41915 r41925 420 420 " gueststatisticsinterval <seconds>]\n" 421 421 " usbattach <uuid>|<address> |\n" 422 " usbdetach <uuid>|<address> |\n" );423 RTStrmPrintf(pStrm,424 " vrde on|off |\n");425 RTStrmPrintf(pStrm,422 " usbdetach <uuid>|<address> |\n" 423 " clipboard disabled|hosttoguest|guesttohost|\n" 424 " bidirectional]\n" 425 " vrde on|off |\n" 426 426 " vrdeport <port> |\n" 427 427 " vrdeproperty <name=[value]> |\n" 428 " vrdevideochannelquality <percent>\n"); 429 RTStrmPrintf(pStrm, 428 " vrdevideochannelquality <percent>\n" 430 429 " setvideomodehint <xres> <yres> <bpp> [display] |\n" 431 430 " screenshotpng <file> [display] |\n" -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
r41916 r41925 1954 1954 case MODIFYVM_CLIPBOARD: 1955 1955 { 1956 ClipboardMode_T mode; 1956 1957 if (!strcmp(ValueUnion.psz, "disabled")) 1957 { 1958 CHECK_ERROR(machine, COMSETTER(ClipboardMode)(ClipboardMode_Disabled)); 1959 } 1958 mode = ClipboardMode_Disabled; 1960 1959 else if (!strcmp(ValueUnion.psz, "hosttoguest")) 1961 { 1962 CHECK_ERROR(machine, COMSETTER(ClipboardMode)(ClipboardMode_HostToGuest)); 1963 } 1960 mode = ClipboardMode_HostToGuest; 1964 1961 else if (!strcmp(ValueUnion.psz, "guesttohost")) 1965 { 1966 CHECK_ERROR(machine, COMSETTER(ClipboardMode)(ClipboardMode_GuestToHost)); 1967 } 1962 mode = ClipboardMode_GuestToHost; 1968 1963 else if (!strcmp(ValueUnion.psz, "bidirectional")) 1969 { 1970 CHECK_ERROR(machine, COMSETTER(ClipboardMode)(ClipboardMode_Bidirectional)); 1971 } 1964 mode = ClipboardMode_Bidirectional; 1972 1965 else 1973 1966 { 1974 1967 errorArgument("Invalid --clipboard argument '%s'", ValueUnion.psz); 1975 1968 rc = E_FAIL; 1969 } 1970 if (SUCCEEDED(rc)) 1971 { 1972 CHECK_ERROR(machine, COMSETTER(ClipboardMode)(mode)); 1976 1973 } 1977 1974 break; -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r41914 r41925 14722 14722 <interface 14723 14723 name="IInternalSessionControl" extends="$unknown" 14724 uuid=" c2b4cd5f-d3ce-4dd6-b915-123272163ef5"14724 uuid="9ddb5449-f463-47cb-a717-d6f22da3b3a2" 14725 14725 internal="yes" 14726 14726 wsmap="suppress" … … 14913 14913 <param name="remove" type="boolean" dir="in"> 14914 14914 <desc>TRUE if the device is removed, FALSE if it was added.</desc> 14915 </param> 14916 </method> 14917 14918 <method name="onClipboardModeChange"> 14919 <desc> 14920 Notification when the shared clipboard mode changes. 14921 </desc> 14922 <param name="clipboardMode" type="ClipboardMode" dir="in"> 14923 <desc>The new shared clipboard mode.</desc> 14915 14924 </param> 14916 14925 </method> … … 16665 16674 <enum 16666 16675 name="VBoxEventType" 16667 uuid=" cce48db6-8561-479d-8d46-1358bab45d4e"16676 uuid="100cf5c8-7dd4-4600-8d75-636d211479c9" 16668 16677 > 16669 16678 … … 16923 16932 </desc> 16924 16933 </const> 16934 <const name="OnClipboardModeChanged" value="72"> 16935 <desc> 16936 See <link to="IClipboardModeChangedEvent">IClipboardModeChangedEvent</link>. 16937 </desc> 16938 </const> 16925 16939 16926 16940 <!-- Last event marker --> 16927 <const name="Last" value="7 2">16941 <const name="Last" value="73"> 16928 16942 <desc> 16929 16943 Must be last event, used for iterations and structures relying on numerical event values. … … 17666 17680 <desc> 17667 17681 Medium attachment that is subject to change. 17682 </desc> 17683 </attribute> 17684 </interface> 17685 17686 <interface 17687 name="IClipboardModeChangedEvent" extends="IEvent" 17688 uuid="cac21692-7997-4595-a731-3a509db604e5" 17689 wsmap="managed" autogen="VBoxEvent" id="OnClipboardModeChanged" 17690 > 17691 <desc> 17692 Notification when the shared clipboard mode changes. 17693 </desc> 17694 <attribute name="clipboardMode" type="ClipboardMode" readonly="yes"> 17695 <desc> 17696 The new clipboard mode. 17668 17697 </desc> 17669 17698 </attribute> -
trunk/src/VBox/Main/include/ConsoleImpl.h
r41528 r41925 197 197 HRESULT onCPUChange(ULONG aCPU, BOOL aRemove); 198 198 HRESULT onCPUExecutionCapChange(ULONG aExecutionCap); 199 HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode); 199 200 HRESULT onVRDEServerChange(BOOL aRestart); 200 201 HRESULT onUSBControllerChange(); … … 600 601 INetworkAdapter *aNetworkAdapter); 601 602 603 void changeClipboardMode(ClipboardMode_T aClipboardMode); 604 602 605 #ifdef VBOX_WITH_USB 603 606 HRESULT attachUSBDevice(IUSBDevice *aHostDevice, ULONG aMaskedIfs); -
trunk/src/VBox/Main/include/MachineImpl.h
r41914 r41925 687 687 virtual HRESULT onMediumChange(IMediumAttachment * /* mediumAttachment */, BOOL /* force */) { return S_OK; } 688 688 virtual HRESULT onSharedFolderChange() { return S_OK; } 689 virtual HRESULT onClipboardModeChange(ClipboardMode_T /* aClipboardMode */) { return S_OK; } 689 690 virtual HRESULT onBandwidthGroupChange(IBandwidthGroup * /* aBandwidthGroup */) { return S_OK; } 690 691 virtual HRESULT onStorageDeviceChange(IMediumAttachment * /* mediumAttachment */, BOOL /* remove */) { return S_OK; } … … 1072 1073 IVirtualBoxErrorInfo *aError); 1073 1074 HRESULT onSharedFolderChange(); 1075 HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode); 1074 1076 HRESULT onBandwidthGroupChange(IBandwidthGroup *aBandwidthGroup); 1075 1077 HRESULT onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove); -
trunk/src/VBox/Main/include/SessionImpl.h
r40084 r41925 95 95 STDMETHOD(OnUSBControllerChange)(); 96 96 STDMETHOD(OnSharedFolderChange)(BOOL aGlobal); 97 STDMETHOD(OnClipboardModeChange)(ClipboardMode_T aClipboardMode); 97 98 STDMETHOD(OnUSBDeviceAttach)(IUSBDevice *aDevice, IVirtualBoxErrorInfo *aError, ULONG aMaskedIfs); 98 99 STDMETHOD(OnUSBDeviceDetach)(IN_BSTR aId, IVirtualBoxErrorInfo *aError); -
trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
r41842 r41925 4847 4847 alock.release(); 4848 4848 fireCPUExecutionCapChangedEvent(mEventSource, aExecutionCap); 4849 } 4850 4851 LogFlowThisFunc(("Leaving rc=%#x\n", rc)); 4852 return rc; 4853 } 4854 4855 /** 4856 * Called by IInternalSessionControl::OnClipboardModeChange(). 4857 * 4858 * @note Locks this object for writing. 4859 */ 4860 HRESULT Console::onClipboardModeChange(ClipboardMode_T aClipboardMode) 4861 { 4862 LogFlowThisFunc(("\n")); 4863 4864 AutoCaller autoCaller(this); 4865 AssertComRCReturnRC(autoCaller.rc()); 4866 4867 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 4868 4869 HRESULT rc = S_OK; 4870 4871 /* don't trigger the Clipboard mode change if the VM isn't running */ 4872 SafeVMPtrQuiet ptrVM(this); 4873 if (ptrVM.isOk()) 4874 { 4875 if ( mMachineState == MachineState_Running 4876 || mMachineState == MachineState_Teleporting 4877 || mMachineState == MachineState_LiveSnapshotting) 4878 changeClipboardMode(aClipboardMode); 4879 else 4880 rc = setInvalidMachineStateError(); 4881 ptrVM.release(); 4882 } 4883 4884 /* notify console callbacks on success */ 4885 if (SUCCEEDED(rc)) 4886 { 4887 alock.release(); 4888 fireClipboardModeChangedEvent(mEventSource, aClipboardMode); 4849 4889 } 4850 4890 … … 7627 7667 break; 7628 7668 } 7669 } 7670 7671 /** 7672 * Changes the clipboard mode. 7673 * 7674 * @param aClipboardMode new clipboard mode. 7675 */ 7676 void Console::changeClipboardMode(ClipboardMode_T aClipboardMode) 7677 { 7678 VMMDev *pVMMDev = m_pVMMDev; 7679 Assert(pVMMDev); 7680 7681 VBOXHGCMSVCPARM parm; 7682 parm.type = VBOX_HGCM_SVC_PARM_32BIT; 7683 7684 switch (aClipboardMode) 7685 { 7686 default: 7687 case ClipboardMode_Disabled: 7688 LogRel(("VBoxSharedClipboard mode: Off\n")); 7689 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_OFF; 7690 break; 7691 case ClipboardMode_GuestToHost: 7692 LogRel(("VBoxSharedClipboard mode: Guest to Host\n")); 7693 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_GUEST_TO_HOST; 7694 break; 7695 case ClipboardMode_HostToGuest: 7696 LogRel(("VBoxSharedClipboard mode: Host to Guest\n")); 7697 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_HOST_TO_GUEST; 7698 break; 7699 case ClipboardMode_Bidirectional: 7700 LogRel(("VBoxSharedClipboard mode: Bidirectional\n")); 7701 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_BIDIRECTIONAL; 7702 break; 7703 } 7704 7705 pVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE, 1, &parm); 7629 7706 } 7630 7707 -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r41842 r41925 2438 2438 hrc = pMachine->COMGETTER(ClipboardMode)(&mode); H(); 2439 2439 2440 if ( mode != ClipboardMode_Disabled)2440 if (/* mode != ClipboardMode_Disabled */ true) 2441 2441 { 2442 2442 /* Load the service */ … … 2451 2451 else 2452 2452 { 2453 changeClipboardMode(mode); 2454 2453 2455 /* Setup the service. */ 2454 2456 VBOXHGCMSVCPARM parm; 2455 2456 2457 parm.type = VBOX_HGCM_SVC_PARM_32BIT; 2457 2458 switch (mode)2459 {2460 default:2461 case ClipboardMode_Disabled:2462 {2463 LogRel(("VBoxSharedClipboard mode: Off\n"));2464 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_OFF;2465 break;2466 }2467 case ClipboardMode_GuestToHost:2468 {2469 LogRel(("VBoxSharedClipboard mode: Guest to Host\n"));2470 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_GUEST_TO_HOST;2471 break;2472 }2473 case ClipboardMode_HostToGuest:2474 {2475 LogRel(("VBoxSharedClipboard mode: Host to Guest\n"));2476 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_HOST_TO_GUEST;2477 break;2478 }2479 case ClipboardMode_Bidirectional:2480 {2481 LogRel(("VBoxSharedClipboard mode: Bidirectional\n"));2482 parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_BIDIRECTIONAL;2483 break;2484 }2485 }2486 2487 pVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE, 1, &parm);2488 2489 2458 parm.setUInt32(!useHostClipboard()); 2490 2491 2459 pVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_HEADLESS, 1, &parm); 2492 2460 -
trunk/src/VBox/Main/src-client/SessionImpl.cpp
r40748 r41925 657 657 658 658 return mConsole->onSharedFolderChange(aGlobal); 659 } 660 661 STDMETHODIMP Session::OnClipboardModeChange(ClipboardMode_T aClipboardMode) 662 { 663 LogFlowThisFunc(("\n")); 664 665 AutoCaller autoCaller(this); 666 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 667 668 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 669 AssertReturn(mState == SessionState_Locked, VBOX_E_INVALID_VM_STATE); 670 AssertReturn(mType == SessionType_WriteLock, VBOX_E_INVALID_OBJECT_STATE); 671 672 return mConsole->onClipboardModeChange(aClipboardMode); 659 673 } 660 674 -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r41921 r41925 2562 2562 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 2563 2563 2564 HRESULT rc = checkStateDependency(MutableStateDep);2565 if (FAILED(rc)) return rc;2566 2567 2564 setModified(IsModified_MachineData); 2568 2565 mHWData.backup(); 2569 2566 mHWData->mClipboardMode = aClipboardMode; 2567 2568 alock.release(); 2569 onClipboardModeChange(aClipboardMode); 2570 2570 2571 2571 return S_OK; … … 8360 8360 uint32_t fFlags = guestProp::NILFLAG; 8361 8361 guestProp::validateFlags(prop.strFlags.c_str(), &fFlags); 8362 HWData::GuestProperty property = { prop.strName, prop.strValue, prop.timestamp, fFlags };8362 HWData::GuestProperty property = { prop.strName, prop.strValue, (LONG64) prop.timestamp, fFlags }; 8363 8363 mHWData->mGuestProperties.push_back(property); 8364 8364 } … … 12746 12746 12747 12747 /** 12748 * @note Locks this object for reading. 12749 */ 12750 HRESULT SessionMachine::onClipboardModeChange(ClipboardMode_T aClipboardMode) 12751 { 12752 LogFlowThisFunc(("\n")); 12753 12754 AutoCaller autoCaller(this); 12755 AssertComRCReturnRC(autoCaller.rc()); 12756 12757 ComPtr<IInternalSessionControl> directControl; 12758 { 12759 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 12760 directControl = mData->mSession.mDirectControl; 12761 } 12762 12763 /* ignore notifications sent after #OnSessionEnd() is called */ 12764 if (!directControl) 12765 return S_OK; 12766 12767 return directControl->OnClipboardModeChange(aClipboardMode); 12768 } 12769 12770 /** 12748 12771 * @note Locks this object for reading. 12749 12772 */
Note:
See TracChangeset
for help on using the changeset viewer.