- Timestamp:
- Feb 25, 2010 11:17:30 AM (15 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
r26607 r26782 309 309 } 310 310 311 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)311 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 312 312 { 313 313 /* Emit absolute mouse event to actually enable the host mouse cursor. */ -
trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
r26603 r26782 185 185 static BOOL gfAbsoluteMouseHost = FALSE; 186 186 static BOOL gfAbsoluteMouseGuest = FALSE; 187 static BOOL gfRelativeMouseGuest = TRUE; 187 188 static BOOL gfGuestNeedsHostCursor = FALSE; 188 189 static BOOL gfOffCursorActive = FALSE; … … 430 431 } 431 432 432 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor) 433 { 434 LogFlow(("OnMouseCapabilityChange: supportsAbsolute = %d\n", supportsAbsolute)); 433 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 434 { 435 LogFlow(("OnMouseCapabilityChange: supportsAbsolute = %d, supportsRelative = %d, needsHostCursor = %d\n", 436 supportsAbsolute, supportsRelative, needsHostCursor)); 435 437 gfAbsoluteMouseGuest = supportsAbsolute; 438 gfRelativeMouseGuest = supportsRelative; 436 439 gfGuestNeedsHostCursor = needsHostCursor; 437 440 … … 3879 3882 DisableGlobalHotKeys(true); 3880 3883 #endif 3881 if (!gfGuestNeedsHostCursor )3884 if (!gfGuestNeedsHostCursor && gfRelativeMouseGuest) 3882 3885 SDL_ShowCursor(SDL_DISABLE); 3883 3886 SDL_WM_GrabInput(SDL_GRAB_ON); … … 3898 3901 { 3899 3902 SDL_WM_GrabInput(SDL_GRAB_OFF); 3900 if (!gfGuestNeedsHostCursor )3903 if (!gfGuestNeedsHostCursor && gfRelativeMouseGuest) 3901 3904 SDL_ShowCursor(SDL_ENABLE); 3902 3905 #ifdef RT_OS_DARWIN … … 3931 3934 * If supported and we're not in grabbed mode, we'll use the absolute mouse. 3932 3935 * If we are in grabbed mode and the guest is not able to draw the mouse cursor 3933 * itself, we have to use absolute coordinates, otherwise the host cursor and 3936 * itself, or can't handle relative reporting, we have to use absolute 3937 * coordinates, otherwise the host cursor and 3934 3938 * the coordinates the guest thinks the mouse is at could get out-of-sync. From 3935 3939 * the SDL mailing list: … … 3939 3943 * call SDL_GetMouseState, the "button" is already up." 3940 3944 */ 3941 abs = (UseAbsoluteMouse() && !gfGrabbed) || gfGuestNeedsHostCursor; 3945 abs = (UseAbsoluteMouse() && !gfGrabbed) 3946 || gfGuestNeedsHostCursor 3947 || !gfRelativeMouseGuest; 3942 3948 3943 3949 /* only used if abs == TRUE */ -
trunk/src/VBox/Frontends/VBoxShell/vboxshell.py
r26623 r26782 39 39 def onMousePointerShapeChange(self, visible, alpha, xHot, yHot, width, height, shape): 40 40 print "%s: onMousePointerShapeChange: visible=%d" %(self.mach.name, visible) 41 def onMouseCapabilityChange(self, supportsAbsolute, needsHostCursor):42 print "%s: onMouseCapabilityChange: needsHostCursor=%d" %(self.mach.name, needsHostCursor)41 def onMouseCapabilityChange(self, supportsAbsolute, supportsRelative, needsHostCursor): 42 print "%s: onMouseCapabilityChange: supportsAbsolute = %d, supportsRelative = %d, needsHostCursor = %d" %(self.mach.name, supportsAbsolute, supportsRelative, needsHostCursor) 43 43 44 44 def onKeyboardLedsChange(self, numLock, capsLock, scrollLock): -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
r26729 r26782 247 247 { 248 248 public: 249 MouseCapabilityEvent (bool supportsAbsolute, bool needsHostCursor) :249 MouseCapabilityEvent (bool supportsAbsolute, bool supportsRelative, bool needsHostCursor) : 250 250 QEvent ((QEvent::Type) VBoxDefs::MouseCapabilityEventType), 251 251 can_abs (supportsAbsolute), 252 can_rel (supportsRelative), 252 253 needs_host_cursor (needsHostCursor) {} 253 254 bool supportsAbsolute() const { return can_abs; } 255 bool supportsRelative() const { return can_rel; } 254 256 bool needsHostCursor() const { return needs_host_cursor; } 255 257 private: 256 258 bool can_abs; 259 bool can_rel; 257 260 bool needs_host_cursor; 258 261 }; … … 433 436 } 434 437 435 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)438 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 436 439 { 437 440 QApplication::postEvent (mView, 438 441 new MouseCapabilityEvent (supportsAbsolute, 442 supportsRelative, 439 443 needsHostCursor)); 440 444 return S_OK; … … 680 684 , mKbdCaptured (false) 681 685 , mMouseCaptured (false) 682 , mMouseAbsolute (false) 686 , mMouseCanAbsolute (false) 687 , mMouseCanRelative (true) 688 , mMouseNeedsHostCursor (false) 683 689 , mMouseIntegration (true) 684 690 , m_iLastMouseWheelDelta(0) … … 1126 1132 return; 1127 1133 1128 if (mMouse Absolute)1134 if (mMouseCanAbsolute) 1129 1135 captureMouse (!enabled, false); 1130 1136 … … 1371 1377 * supported (change mouse shape type event may arrive after 1372 1378 * mouse capability change that disables integration */ 1373 if (mMouse Absolute)1379 if (mMouseCanAbsolute) 1374 1380 setPointerShape (me); 1375 1381 else … … 1383 1389 { 1384 1390 MouseCapabilityEvent *me = (MouseCapabilityEvent *) e; 1385 if (mMouse Absolute != me->supportsAbsolute())1391 if (mMouseCanAbsolute != me->supportsAbsolute()) 1386 1392 { 1387 mMouse Absolute = me->supportsAbsolute();1393 mMouseCanAbsolute = me->supportsAbsolute(); 1388 1394 /* correct the mouse capture state and reset the cursor 1389 1395 * to the default shape if necessary */ 1390 if (mMouse Absolute)1396 if (mMouseCanAbsolute) 1391 1397 { 1392 1398 CMouse mouse = mConsole.GetMouse(); … … 1399 1405 viewport()->unsetCursor(); 1400 1406 emitMouseStateChanged(); 1401 vboxProblem().remindAboutMouseIntegration (mMouse Absolute);1407 vboxProblem().remindAboutMouseIntegration (mMouseCanAbsolute); 1402 1408 } 1403 if (me->needsHostCursor()) 1409 mMouseCanRelative = me->supportsRelative(); 1410 mMouseNeedsHostCursor = me->needsHostCursor(); 1411 if (!me->supportsRelative() || me->needsHostCursor()) 1404 1412 mMainWnd->setMouseIntegrationLocked (false); 1405 1413 else … … 2540 2548 // released after we got focus, and grab the mouse only after then. 2541 2549 // btw, the similar would be good the for keyboard auto-capture, too. 2542 // if (!(mMouse Absolute && mMouseIntegration))2550 // if (!(mMouseCanAbsolute && mMouseIntegration)) 2543 2551 // captureMouse (true); 2544 2552 } … … 2810 2818 { 2811 2819 captureKbd (false); 2812 if (!(mMouse Absolute && mMouseIntegration))2820 if (!(mMouseCanAbsolute && mMouseIntegration)) 2813 2821 captureMouse (false); 2814 2822 } … … 2920 2928 { 2921 2929 captureKbd (!captured, false); 2922 if (!(mMouse Absolute && mMouseIntegration))2930 if (!(mMouseCanAbsolute && mMouseIntegration)) 2923 2931 { 2924 2932 #ifdef Q_WS_X11 … … 3232 3240 } 3233 3241 3234 if (mMouse Absolute && mMouseIntegration)3242 if (mMouseCanAbsolute && mMouseIntegration) 3235 3243 { 3236 3244 int cw = contentsWidth(), ch = contentsHeight(); -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.h
r26729 r26782 97 97 void setMouseIntegrationEnabled (bool enabled); 98 98 99 bool isMouseAbsolute() const { return mMouseAbsolute; } 99 bool mouseCanAbsolute() const { return mMouseCanAbsolute; } 100 bool mouseCanRelative() const { return mMouseCanRelative; } 101 bool mouseNeedsHostCursor() const { return mMouseNeedsHostCursor; } 100 102 101 103 bool shouldHideHostPointer() const 102 { return mMouseCaptured || (mMouse Absolute && mHideHostPointer); }104 { return mMouseCaptured || (mMouseCanAbsolute && mHideHostPointer); } 103 105 104 106 void setAutoresizeGuest (bool on); … … 210 212 void emitMouseStateChanged() { 211 213 emit mouseStateChanged ((mMouseCaptured ? MouseCaptured : 0) | 212 (mMouse Absolute ? MouseAbsolute : 0) |214 (mMouseCanAbsolute ? MouseAbsolute : 0) | 213 215 (!mMouseIntegration ? MouseAbsoluteDisabled : 0)); 214 216 } … … 275 277 bool mKbdCaptured : 1; 276 278 bool mMouseCaptured : 1; 277 bool mMouseAbsolute : 1; 279 bool mMouseCanAbsolute : 1; 280 bool mMouseCanRelative : 1; 281 bool mMouseNeedsHostCursor : 1; 278 282 bool mMouseIntegration : 1; 279 283 QPoint mLastPos; -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
r26581 r26782 3305 3305 || mMachineState == KMachineState_LiveSnapshotting 3306 3306 ) 3307 mVmDisableMouseIntegrAction->setEnabled (mConsole-> isMouseAbsolute());3307 mVmDisableMouseIntegrAction->setEnabled (mConsole->mouseCanAbsolute() && mConsole->mouseCanRelative() && !mConsole->mouseNeedsHostCursor()); 3308 3308 else 3309 3309 mVmDisableMouseIntegrAction->setEnabled (false); -
trunk/src/VBox/Main/ConsoleImpl.cpp
r26753 r26782 2997 2997 if (mCallbackData.mcc.valid) 2998 2998 aCallback->OnMouseCapabilityChange(mCallbackData.mcc.supportsAbsolute, 2999 mCallbackData.mcc.supportsRelative, 2999 3000 mCallbackData.mcc.needsHostCursor); 3000 3001 … … 4592 4593 * @note Locks this object for writing. 4593 4594 */ 4594 void Console::onMouseCapabilityChange(BOOL supportsAbsolute, BOOL needsHostCursor)4595 { 4596 LogFlowThisFunc(("supportsAbsolute=%d needsHostCursor=%d\n",4597 supportsAbsolute, needsHostCursor));4595 void Console::onMouseCapabilityChange(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 4596 { 4597 LogFlowThisFunc(("supportsAbsolute=%d supportsRelative=%d needsHostCursor=%d\n", 4598 supportsAbsolute, supportsRelative, needsHostCursor)); 4598 4599 4599 4600 AutoCaller autoCaller(this); … … 4605 4606 /* save the callback arguments */ 4606 4607 mCallbackData.mcc.supportsAbsolute = supportsAbsolute; 4608 mCallbackData.mcc.supportsRelative = supportsRelative; 4607 4609 mCallbackData.mcc.needsHostCursor = needsHostCursor; 4608 4610 mCallbackData.mcc.valid = true; … … 4612 4614 { 4613 4615 Log2(("Console::onMouseCapabilityChange: calling %p\n", (void*)*it)); 4614 (*it++)->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor);4616 (*it++)->OnMouseCapabilityChange(supportsAbsolute, supportsRelative, needsHostCursor); 4615 4617 } 4616 4618 } -
trunk/src/VBox/Main/ConsoleVRDPServer.cpp
r26235 r26782 90 90 ULONG width, ULONG height, BYTE *shape); 91 91 92 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)92 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 93 93 { 94 94 if (m_server) -
trunk/src/VBox/Main/MouseImpl.cpp
r26750 r26782 55 55 { 56 56 mpDrv = NULL; 57 uDevCaps = MOUSE_DEVCAP_RELATIVE; 58 fVMMDevCanAbs = false; 59 fVMMDevNeedsHostCursor = false; 57 60 mLastAbsX = 0x8000; 58 61 mLastAbsY = 0x8000; … … 170 173 *absoluteSupported = TRUE; 171 174 else 172 { 173 uint32_t mouseCaps; 174 int rc = getVMMDevMouseCaps(&mouseCaps); 175 AssertComRCReturn(rc, rc); 176 *absoluteSupported = mouseCaps & VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE; 177 } 175 *absoluteSupported = fVMMDevCanAbs; 176 177 return S_OK; 178 } 179 180 /** 181 * Returns whether the current setup can accept relative mouse 182 * events. 183 * 184 * @returns COM status code 185 * @param relativeSupported address of result variable 186 */ 187 STDMETHODIMP Mouse::COMGETTER(RelativeSupported) (BOOL *relativeSupported) 188 { 189 if (!relativeSupported) 190 return E_POINTER; 191 192 AutoCaller autoCaller(this); 193 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 194 195 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 196 197 CHECK_CONSOLE_DRV (mpDrv); 198 199 if (uDevCaps & MOUSE_DEVCAP_RELATIVE) 200 *relativeSupported = TRUE; 178 201 179 202 return S_OK; … … 184 207 * 185 208 * @returns COM status code 186 * @param absoluteSupportedaddress of result variable209 * @param pfNeedsHostCursor address of result variable 187 210 */ 188 211 STDMETHODIMP Mouse::COMGETTER(NeedsHostCursor) (BOOL *pfNeedsHostCursor) … … 198 221 CHECK_CONSOLE_DRV (mpDrv); 199 222 200 uint32_t fMouseCaps; 201 int rc = getVMMDevMouseCaps(&fMouseCaps); 202 AssertComRCReturn(rc, rc); 203 *pfNeedsHostCursor = !!( fMouseCaps 204 & VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR); 223 *pfNeedsHostCursor = fVMMDevNeedsHostCursor; 205 224 return S_OK; 206 225 } … … 474 493 475 494 495 void Mouse::sendMouseCapsCallback(void) 496 { 497 bool fAbsSupported = uDevCaps & MOUSE_DEVCAP_ABSOLUTE 498 ? true : fVMMDevCanAbs; 499 mParent->onMouseCapabilityChange(fAbsSupported, uDevCaps & MOUSE_DEVCAP_RELATIVE, fVMMDevNeedsHostCursor); 500 } 501 502 476 503 /** 477 504 * @interface_method_impl{PDMIMOUSECONNECTOR,pfnAbsModeChange} … … 485 512 pDrv->pMouse->uDevCaps &= ~MOUSE_DEVCAP_ABSOLUTE; 486 513 487 /** @todo we have to hack around the fact that VMMDev may not be 488 * initialised too close to startup. The real fix is to change the 489 * protocol for onMouseCapabilityChange so that we no longer need to 490 * query VMMDev, but that requires more changes that I want to do in 491 * the next commit, so it must be put off until the followup one. */ 492 uint32_t fMouseCaps = 0; 493 int rc = S_OK; 494 if ( pDrv->pMouse->mParent->getVMMDev() 495 && pDrv->pMouse->mParent->getVMMDev()->mpDrv) 496 rc = pDrv->pMouse->getVMMDevMouseCaps(&fMouseCaps); 497 AssertComRCReturnVoid(rc); 498 pDrv->pMouse->getParent()->onMouseCapabilityChange(fEnabled, fMouseCaps & VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR); 514 pDrv->pMouse->sendMouseCapsCallback(); 499 515 } 500 516 -
trunk/src/VBox/Main/VMMDevInterface.cpp
r26350 r26782 24 24 #include "DisplayImpl.h" 25 25 #include "GuestImpl.h" 26 #include "MouseImpl.h" 26 27 27 28 #include "Logging.h" … … 253 254 * so that it can notify its consumers. 254 255 */ 255 pDrv->pVMMDev->getParent()->onMouseCapabilityChange(BOOL (newCapabilities & VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE), 256 BOOL (newCapabilities & VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR)); 256 Mouse *pMouse = pDrv->pVMMDev->getParent()->getMouse(); 257 if (pMouse) /** @todo and if not? Can that actually happen? */ 258 { 259 pMouse->onVMMDevCanAbsChange(BOOL (newCapabilities & VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE)); 260 pMouse->onVMMDevNeedsHostChange(BOOL (newCapabilities & VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR)); 261 } 257 262 } 258 263 -
trunk/src/VBox/Main/VirtualBoxCallbackImpl.cpp
r25901 r26782 175 175 176 176 177 STDMETHODIMP CallbackWrapper::OnMouseCapabilityChange(BOOL supportsAbsolute, BOOL needsHostCursor)178 { 179 if (mConsoleCallback.isNull()) 180 return S_OK; 181 182 return mConsoleCallback->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor);177 STDMETHODIMP CallbackWrapper::OnMouseCapabilityChange(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 178 { 179 if (mConsoleCallback.isNull()) 180 return S_OK; 181 182 return mConsoleCallback->OnMouseCapabilityChange(supportsAbsolute, supportsRelative, needsHostCursor); 183 183 } 184 184 -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r26548 r26782 6066 6066 <interface 6067 6067 name="IConsoleCallback" extends="$unknown" 6068 uuid=" d6239535-bda2-4ef7-83f4-f4722e4a3b2c"6068 uuid="60703f8d-81e4-4b45-a147-dcfd07692b19" 6069 6069 wsmap="suppress" 6070 6070 > … … 6159 6159 </desc> 6160 6160 <param name="supportsAbsolute" type="boolean" dir="in"/> 6161 <param name="supportsRelative" type="boolean" dir="in"/> 6161 6162 <param name="needsHostCursor" type="boolean" dir="in"/> 6162 6163 </method> … … 10645 10646 or not. 10646 10647 <note> 10647 VirtualBox Guest Tools need to be installed to the guest OS10648 in order to enable absolute mouse positioning support.10649 10648 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/> 10650 10649 callback to be instantly informed about changes of this attribute … … 10652 10651 </note> 10653 10652 <see><link to="#putMouseEventAbsolute"/></see> 10653 </desc> 10654 </attribute> 10655 10656 <attribute name="relativeSupported" type="boolean" readonly="yes"> 10657 <desc> 10658 Whether the guest OS supports relative mouse pointer positioning 10659 or not. 10660 <note> 10661 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/> 10662 callback to be instantly informed about changes of this attribute 10663 during virtual machine execution. 10664 </note> 10665 <see><link to="#putMouseEvent"/></see> 10666 </desc> 10667 </attribute> 10668 10669 <attribute name="needsHostCursor" type="boolean" readonly="yes"> 10670 <desc> 10671 Whether the guest OS can currently switch to drawing it's own mouse 10672 cursor on demand. 10673 <note> 10674 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/> 10675 callback to be instantly informed about changes of this attribute 10676 during virtual machine execution. 10677 </note> 10678 <see><link to="#putMouseEvent"/></see> 10654 10679 </desc> 10655 10680 </attribute> -
trunk/src/VBox/Main/include/ConsoleImpl.h
r26314 r26782 204 204 uint32_t width, uint32_t height, 205 205 void *pShape); 206 void onMouseCapabilityChange (BOOL supportsAbsolute, BOOL needsHostCursor);206 void onMouseCapabilityChange (BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor); 207 207 void onStateChange (MachineState_T aMachineState); 208 208 void onAdditionsStateChange(); … … 640 640 bool valid; 641 641 BOOL supportsAbsolute; 642 BOOL supportsRelative; 642 643 BOOL needsHostCursor; 643 644 } -
trunk/src/VBox/Main/include/DisplayImpl.h
r26173 r26782 150 150 } 151 151 152 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)152 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor) 153 153 { 154 154 return S_OK; -
trunk/src/VBox/Main/include/MouseImpl.h
r26638 r26782 48 48 enum 49 49 { 50 MOUSE_DEVCAP_ABSOLUTE = 1 50 MOUSE_DEVCAP_RELATIVE = 1, 51 MOUSE_DEVCAP_ABSOLUTE = 2 51 52 }; 52 53 … … 82 83 // IMouse properties 83 84 STDMETHOD(COMGETTER(AbsoluteSupported)) (BOOL *absoluteSupported); 85 STDMETHOD(COMGETTER(RelativeSupported)) (BOOL *relativeSupported); 84 86 STDMETHOD(COMGETTER(NeedsHostCursor)) (BOOL *needsHostCursor); 85 87 … … 100 102 } 101 103 104 // for VMMDevInterface 105 void onVMMDevCanAbsChange(bool canAbs) 106 { 107 fVMMDevCanAbs = canAbs; 108 sendMouseCapsCallback(); 109 } 110 111 void onVMMDevNeedsHostChange(bool needsHost) 112 { 113 fVMMDevNeedsHostCursor = needsHost; 114 sendMouseCapsCallback(); 115 } 116 102 117 private: 103 118 … … 116 131 int convertDisplayWidth(LONG x, uint32_t *pcX); 117 132 int convertDisplayHeight(LONG y, uint32_t *pcY); 133 134 void sendMouseCapsCallback(void); 118 135 119 136 const ComObjPtr<Console, ComWeakRef> mParent; … … 123 140 LONG uHostCaps; 124 141 LONG uDevCaps; 142 bool fVMMDevCanAbs; 143 bool fVMMDevNeedsHostCursor; 125 144 uint32_t mLastAbsX; 126 145 uint32_t mLastAbsY; -
trunk/src/VBox/Main/include/VirtualBoxCallbackImpl.h
r25901 r26782 79 79 STDMETHOD(OnMousePointerShapeChange)(BOOL visible, BOOL alpha, ULONG xHot, ULONG yHot, 80 80 ULONG width, ULONG height, BYTE *shape); 81 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor);81 STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor); 82 82 STDMETHOD(OnKeyboardLedsChange)(BOOL fNumLock, BOOL fCapsLock, BOOL fScrollLock); 83 83 STDMETHOD(OnStateChange)(MachineState_T machineState);
Note:
See TracChangeset
for help on using the changeset viewer.