/** * Returns whether the guest can currently switch to drawing the mouse cursor * itself if it is asked to by the front-end. * * @returns COM status code * @param pfNeedsHostCursor address of result variable */ STDMETHODIMP Mouse::COMGETTER(NeedsHostCursor) (BOOL *pfNeedsHostCursor) { if (!pfNeedsHostCursor) return E_POINTER; AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); *pfNeedsHostCursor = guestNeedsHostCursor(); return S_OK; }
/** Check what sort of reporting can be done using the devices currently * enabled (including the VMM device) and notify the guest and the front-end. */ void Mouse::sendMouseCapsNotifications(void) { bool fAbsDev, fRelDev, fCanAbs, fNeedsHostCursor; { AutoReadLock aLock(this COMMA_LOCKVAL_SRC_POS); getDeviceCaps(&fAbsDev, &fRelDev); fCanAbs = supportsAbs(); fNeedsHostCursor = guestNeedsHostCursor(); } if (fAbsDev) updateVMMDevMouseCaps(VMMDEV_MOUSE_HOST_HAS_ABS_DEV, 0); else updateVMMDevMouseCaps(0, VMMDEV_MOUSE_HOST_HAS_ABS_DEV); /** @todo this call takes the Console lock in order to update the cached * callback data atomically. However I can't see any sign that the cached * data is ever used again. */ mParent->onMouseCapabilityChange(fCanAbs, fRelDev, fNeedsHostCursor); }