VirtualBox

Changeset 26782 in vbox for trunk


Ignore:
Timestamp:
Feb 25, 2010 11:17:30 AM (15 years ago)
Author:
vboxsync
Message:

Main, Frontends: added support for virtual pointing devices with no relative reporting and cleaned up the VMMDev/mouse device absolute reporting interaction

Location:
trunk/src/VBox
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp

    r26607 r26782  
    309309    }
    310310
    311     STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)
     311    STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor)
    312312    {
    313313        /* Emit absolute mouse event to actually enable the host mouse cursor. */
  • trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp

    r26603 r26782  
    185185static BOOL gfAbsoluteMouseHost = FALSE;
    186186static BOOL gfAbsoluteMouseGuest = FALSE;
     187static BOOL gfRelativeMouseGuest = TRUE;
    187188static BOOL gfGuestNeedsHostCursor = FALSE;
    188189static BOOL gfOffCursorActive = FALSE;
     
    430431    }
    431432
    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));
    435437        gfAbsoluteMouseGuest   = supportsAbsolute;
     438        gfRelativeMouseGuest   = supportsRelative;
    436439        gfGuestNeedsHostCursor = needsHostCursor;
    437440
     
    38793882    DisableGlobalHotKeys(true);
    38803883#endif
    3881     if (!gfGuestNeedsHostCursor)
     3884    if (!gfGuestNeedsHostCursor && gfRelativeMouseGuest)
    38823885        SDL_ShowCursor(SDL_DISABLE);
    38833886    SDL_WM_GrabInput(SDL_GRAB_ON);
     
    38983901{
    38993902    SDL_WM_GrabInput(SDL_GRAB_OFF);
    3900     if (!gfGuestNeedsHostCursor)
     3903    if (!gfGuestNeedsHostCursor && gfRelativeMouseGuest)
    39013904        SDL_ShowCursor(SDL_ENABLE);
    39023905#ifdef RT_OS_DARWIN
     
    39313934     * If supported and we're not in grabbed mode, we'll use the absolute mouse.
    39323935     * 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
    39343938     * the coordinates the guest thinks the mouse is at could get out-of-sync. From
    39353939     * the SDL mailing list:
     
    39393943     * call SDL_GetMouseState, the "button" is already up."
    39403944     */
    3941     abs = (UseAbsoluteMouse() && !gfGrabbed) || gfGuestNeedsHostCursor;
     3945    abs =    (UseAbsoluteMouse() && !gfGrabbed)
     3946          || gfGuestNeedsHostCursor
     3947          || !gfRelativeMouseGuest;
    39423948
    39433949    /* only used if abs == TRUE */
  • trunk/src/VBox/Frontends/VBoxShell/vboxshell.py

    r26623 r26782  
    3939    def onMousePointerShapeChange(self, visible, alpha, xHot, yHot, width, height, shape):
    4040        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)
    4343
    4444    def onKeyboardLedsChange(self, numLock, capsLock, scrollLock):
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp

    r26729 r26782  
    247247{
    248248public:
    249     MouseCapabilityEvent (bool supportsAbsolute, bool needsHostCursor) :
     249    MouseCapabilityEvent (bool supportsAbsolute, bool supportsRelative, bool needsHostCursor) :
    250250        QEvent ((QEvent::Type) VBoxDefs::MouseCapabilityEventType),
    251251        can_abs (supportsAbsolute),
     252        can_rel (supportsRelative),
    252253        needs_host_cursor (needsHostCursor) {}
    253254    bool supportsAbsolute() const { return can_abs; }
     255    bool supportsRelative() const { return can_rel; }
    254256    bool needsHostCursor() const { return needs_host_cursor; }
    255257private:
    256258    bool can_abs;
     259    bool can_rel;
    257260    bool needs_host_cursor;
    258261};
     
    433436    }
    434437
    435     STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)
     438    STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor)
    436439    {
    437440        QApplication::postEvent (mView,
    438441                                 new MouseCapabilityEvent (supportsAbsolute,
     442                                                           supportsRelative,
    439443                                                           needsHostCursor));
    440444        return S_OK;
     
    680684    , mKbdCaptured (false)
    681685    , mMouseCaptured (false)
    682     , mMouseAbsolute (false)
     686    , mMouseCanAbsolute (false)
     687    , mMouseCanRelative (true)
     688    , mMouseNeedsHostCursor (false)
    683689    , mMouseIntegration (true)
    684690    , m_iLastMouseWheelDelta(0)
     
    11261132        return;
    11271133
    1128     if (mMouseAbsolute)
     1134    if (mMouseCanAbsolute)
    11291135        captureMouse (!enabled, false);
    11301136
     
    13711377                 * supported (change mouse shape type event may arrive after
    13721378                 * mouse capability change that disables integration */
    1373                 if (mMouseAbsolute)
     1379                if (mMouseCanAbsolute)
    13741380                    setPointerShape (me);
    13751381                else
     
    13831389            {
    13841390                MouseCapabilityEvent *me = (MouseCapabilityEvent *) e;
    1385                 if (mMouseAbsolute != me->supportsAbsolute())
     1391                if (mMouseCanAbsolute != me->supportsAbsolute())
    13861392                {
    1387                     mMouseAbsolute = me->supportsAbsolute();
     1393                    mMouseCanAbsolute = me->supportsAbsolute();
    13881394                    /* correct the mouse capture state and reset the cursor
    13891395                     * to the default shape if necessary */
    1390                     if (mMouseAbsolute)
     1396                    if (mMouseCanAbsolute)
    13911397                    {
    13921398                        CMouse mouse = mConsole.GetMouse();
     
    13991405                        viewport()->unsetCursor();
    14001406                    emitMouseStateChanged();
    1401                     vboxProblem().remindAboutMouseIntegration (mMouseAbsolute);
     1407                    vboxProblem().remindAboutMouseIntegration (mMouseCanAbsolute);
    14021408                }
    1403                 if (me->needsHostCursor())
     1409                mMouseCanRelative = me->supportsRelative();
     1410                mMouseNeedsHostCursor = me->needsHostCursor();
     1411                if (!me->supportsRelative() || me->needsHostCursor())
    14041412                    mMainWnd->setMouseIntegrationLocked (false);
    14051413                else
     
    25402548//      released after we got focus, and grab the mouse only after then.
    25412549//      btw, the similar would be good the for keyboard auto-capture, too.
    2542 //            if (!(mMouseAbsolute && mMouseIntegration))
     2550//            if (!(mMouseCanAbsolute && mMouseIntegration))
    25432551//                captureMouse (true);
    25442552        }
     
    28102818                {
    28112819                    captureKbd (false);
    2812                     if (!(mMouseAbsolute && mMouseIntegration))
     2820                    if (!(mMouseCanAbsolute && mMouseIntegration))
    28132821                        captureMouse (false);
    28142822                }
     
    29202928                        {
    29212929                            captureKbd (!captured, false);
    2922                             if (!(mMouseAbsolute && mMouseIntegration))
     2930                            if (!(mMouseCanAbsolute && mMouseIntegration))
    29232931                            {
    29242932#ifdef Q_WS_X11
     
    32323240        }
    32333241
    3234         if (mMouseAbsolute && mMouseIntegration)
     3242        if (mMouseCanAbsolute && mMouseIntegration)
    32353243        {
    32363244            int cw = contentsWidth(), ch = contentsHeight();
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.h

    r26729 r26782  
    9797    void setMouseIntegrationEnabled (bool enabled);
    9898
    99     bool isMouseAbsolute() const { return mMouseAbsolute; }
     99    bool mouseCanAbsolute() const { return mMouseCanAbsolute; }
     100    bool mouseCanRelative() const { return mMouseCanRelative; }
     101    bool mouseNeedsHostCursor() const { return mMouseNeedsHostCursor; }
    100102
    101103    bool shouldHideHostPointer() const
    102     { return mMouseCaptured || (mMouseAbsolute && mHideHostPointer); }
     104    { return mMouseCaptured || (mMouseCanAbsolute && mHideHostPointer); }
    103105
    104106    void setAutoresizeGuest (bool on);
     
    210212    void emitMouseStateChanged() {
    211213        emit mouseStateChanged ((mMouseCaptured ? MouseCaptured : 0) |
    212                                 (mMouseAbsolute ? MouseAbsolute : 0) |
     214                                (mMouseCanAbsolute ? MouseAbsolute : 0) |
    213215                                (!mMouseIntegration ? MouseAbsoluteDisabled : 0));
    214216    }
     
    275277    bool mKbdCaptured : 1;
    276278    bool mMouseCaptured : 1;
    277     bool mMouseAbsolute : 1;
     279    bool mMouseCanAbsolute : 1;
     280    bool mMouseCanRelative : 1;
     281    bool mMouseNeedsHostCursor : 1;
    278282    bool mMouseIntegration : 1;
    279283    QPoint mLastPos;
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp

    r26581 r26782  
    33053305            || mMachineState == KMachineState_LiveSnapshotting
    33063306           )
    3307             mVmDisableMouseIntegrAction->setEnabled (mConsole->isMouseAbsolute());
     3307            mVmDisableMouseIntegrAction->setEnabled (mConsole->mouseCanAbsolute() && mConsole->mouseCanRelative() && !mConsole->mouseNeedsHostCursor());
    33083308        else
    33093309            mVmDisableMouseIntegrAction->setEnabled (false);
  • trunk/src/VBox/Main/ConsoleImpl.cpp

    r26753 r26782  
    29972997    if (mCallbackData.mcc.valid)
    29982998        aCallback->OnMouseCapabilityChange(mCallbackData.mcc.supportsAbsolute,
     2999                                           mCallbackData.mcc.supportsRelative,
    29993000                                           mCallbackData.mcc.needsHostCursor);
    30003001
     
    45924593 * @note Locks this object for writing.
    45934594 */
    4594 void Console::onMouseCapabilityChange(BOOL supportsAbsolute, BOOL needsHostCursor)
    4595 {
    4596     LogFlowThisFunc(("supportsAbsolute=%d needsHostCursor=%d\n",
    4597                       supportsAbsolute, needsHostCursor));
     4595void Console::onMouseCapabilityChange(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor)
     4596{
     4597    LogFlowThisFunc(("supportsAbsolute=%d supportsRelative=%d needsHostCursor=%d\n",
     4598                      supportsAbsolute, supportsRelative, needsHostCursor));
    45984599
    45994600    AutoCaller autoCaller(this);
     
    46054606    /* save the callback arguments */
    46064607    mCallbackData.mcc.supportsAbsolute = supportsAbsolute;
     4608    mCallbackData.mcc.supportsRelative = supportsRelative;
    46074609    mCallbackData.mcc.needsHostCursor = needsHostCursor;
    46084610    mCallbackData.mcc.valid = true;
     
    46124614    {
    46134615        Log2(("Console::onMouseCapabilityChange: calling %p\n", (void*)*it));
    4614         (*it++)->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor);
     4616        (*it++)->OnMouseCapabilityChange(supportsAbsolute, supportsRelative, needsHostCursor);
    46154617    }
    46164618}
  • trunk/src/VBox/Main/ConsoleVRDPServer.cpp

    r26235 r26782  
    9090                                         ULONG width, ULONG height, BYTE *shape);
    9191
    92     STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)
     92    STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor)
    9393    {
    9494        if (m_server)
  • trunk/src/VBox/Main/MouseImpl.cpp

    r26750 r26782  
    5555{
    5656    mpDrv = NULL;
     57    uDevCaps = MOUSE_DEVCAP_RELATIVE;
     58    fVMMDevCanAbs = false;
     59    fVMMDevNeedsHostCursor = false;
    5760    mLastAbsX = 0x8000;
    5861    mLastAbsY = 0x8000;
     
    170173        *absoluteSupported = TRUE;
    171174    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 */
     187STDMETHODIMP 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;
    178201
    179202    return S_OK;
     
    184207 *
    185208 * @returns COM status code
    186  * @param absoluteSupported address of result variable
     209 * @param pfNeedsHostCursor address of result variable
    187210 */
    188211STDMETHODIMP Mouse::COMGETTER(NeedsHostCursor) (BOOL *pfNeedsHostCursor)
     
    198221    CHECK_CONSOLE_DRV (mpDrv);
    199222
    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;
    205224    return S_OK;
    206225}
     
    474493
    475494
     495void 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
    476503/**
    477504 * @interface_method_impl{PDMIMOUSECONNECTOR,pfnAbsModeChange}
     
    485512        pDrv->pMouse->uDevCaps &= ~MOUSE_DEVCAP_ABSOLUTE;
    486513
    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();
    499515}
    500516
  • trunk/src/VBox/Main/VMMDevInterface.cpp

    r26350 r26782  
    2424#include "DisplayImpl.h"
    2525#include "GuestImpl.h"
     26#include "MouseImpl.h"
    2627
    2728#include "Logging.h"
     
    253254     * so that it can notify its consumers.
    254255     */
    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    }
    257262}
    258263
  • trunk/src/VBox/Main/VirtualBoxCallbackImpl.cpp

    r25901 r26782  
    175175
    176176
    177 STDMETHODIMP CallbackWrapper::OnMouseCapabilityChange(BOOL supportsAbsolute, BOOL needsHostCursor)
    178 {
    179     if (mConsoleCallback.isNull())
    180         return S_OK;
    181 
    182     return mConsoleCallback->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor);
     177STDMETHODIMP 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);
    183183}
    184184
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r26548 r26782  
    60666066  <interface
    60676067     name="IConsoleCallback" extends="$unknown"
    6068      uuid="d6239535-bda2-4ef7-83f4-f4722e4a3b2c"
     6068     uuid="60703f8d-81e4-4b45-a147-dcfd07692b19"
    60696069     wsmap="suppress"
    60706070     >
     
    61596159      </desc>
    61606160      <param name="supportsAbsolute" type="boolean" dir="in"/>
     6161      <param name="supportsRelative" type="boolean" dir="in"/>
    61616162      <param name="needsHostCursor" type="boolean" dir="in"/>
    61626163    </method>
     
    1064510646        or not.
    1064610647        <note>
    10647           VirtualBox Guest Tools need to be installed to the guest OS
    10648           in order to enable absolute mouse positioning support.
    1064910648          You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/>
    1065010649          callback to be instantly informed about changes of this attribute
     
    1065210651        </note>
    1065310652        <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>
    1065410679      </desc>
    1065510680    </attribute>
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r26314 r26782  
    204204                                   uint32_t width, uint32_t height,
    205205                                   void *pShape);
    206     void onMouseCapabilityChange (BOOL supportsAbsolute, BOOL needsHostCursor);
     206    void onMouseCapabilityChange (BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor);
    207207    void onStateChange (MachineState_T aMachineState);
    208208    void onAdditionsStateChange();
     
    640640            bool valid;
    641641            BOOL supportsAbsolute;
     642            BOOL supportsRelative;
    642643            BOOL needsHostCursor;
    643644        }
  • trunk/src/VBox/Main/include/DisplayImpl.h

    r26173 r26782  
    150150    }
    151151
    152     STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)
     152    STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor)
    153153    {
    154154        return S_OK;
  • trunk/src/VBox/Main/include/MouseImpl.h

    r26638 r26782  
    4848enum
    4949{
    50     MOUSE_DEVCAP_ABSOLUTE = 1
     50    MOUSE_DEVCAP_RELATIVE = 1,
     51    MOUSE_DEVCAP_ABSOLUTE = 2
    5152};
    5253
     
    8283    // IMouse properties
    8384    STDMETHOD(COMGETTER(AbsoluteSupported)) (BOOL *absoluteSupported);
     85    STDMETHOD(COMGETTER(RelativeSupported)) (BOOL *relativeSupported);
    8486    STDMETHOD(COMGETTER(NeedsHostCursor)) (BOOL *needsHostCursor);
    8587
     
    100102    }
    101103
     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
    102117private:
    103118
     
    116131    int convertDisplayWidth(LONG x, uint32_t *pcX);
    117132    int convertDisplayHeight(LONG y, uint32_t *pcY);
     133   
     134    void sendMouseCapsCallback(void);
    118135
    119136    const ComObjPtr<Console, ComWeakRef> mParent;
     
    123140    LONG uHostCaps;
    124141    LONG uDevCaps;
     142    bool fVMMDevCanAbs;
     143    bool fVMMDevNeedsHostCursor;
    125144    uint32_t mLastAbsX;
    126145    uint32_t mLastAbsY;
  • trunk/src/VBox/Main/include/VirtualBoxCallbackImpl.h

    r25901 r26782  
    7979    STDMETHOD(OnMousePointerShapeChange)(BOOL visible, BOOL alpha, ULONG xHot, ULONG yHot,
    8080                                         ULONG width, ULONG height, BYTE *shape);
    81     STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor);
     81    STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor);
    8282    STDMETHOD(OnKeyboardLedsChange)(BOOL fNumLock, BOOL fCapsLock, BOOL fScrollLock);
    8383    STDMETHOD(OnStateChange)(MachineState_T machineState);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette