VirtualBox

Ignore:
Timestamp:
May 26, 2011 5:06:02 PM (14 years ago)
Author:
vboxsync
Message:

VBoxMouse/VBoxGuest/win: avoid poller thread for mouse events notifications over NEW_PROTOCOL

Location:
trunk/src/VBox/Additions/common/VBoxGuest
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp

    r37221 r37226  
    810810    switch (uCmd)
    811811    {
    812         case VBOXGUEST_IOCTL_INTERNAL_SET_MOUSE_NOTIFY_EVENT:
     812        case VBOXGUEST_IOCTL_INTERNAL_SET_MOUSE_NOTIFY_CALLBACK:
    813813        {
    814814            PVOID pvBuf = pStack->Parameters.Others.Argument1;
    815815            size_t cbData = (size_t)pStack->Parameters.Others.Argument2;
    816816            fProcessed = true;
    817             if (cbData != sizeof (PKEVENT))
     817            if (cbData != sizeof(VBoxGuestMouseSetNotifyCallback))
    818818            {
    819819                AssertFailed();
     
    823823
    824824            KIRQL OldIrql;
     825            VBoxGuestMouseSetNotifyCallback *pInfo = (VBoxGuestMouseSetNotifyCallback*)pvBuf;
    825826            /* we need a lock here to avoid concurrency with the set event functionality */
    826827            KeAcquireSpinLock(&pDevExt->win.s.MouseEventAccessLock, &OldIrql);
    827             pDevExt->win.s.pMouseEvent =  (PKEVENT)pvBuf;
     828            pDevExt->win.s.pfnMouseNotify =  pInfo->pfnNotify;
     829            pDevExt->win.s.pvMouseNotify =  pInfo->pvNotify;
    828830            KeReleaseSpinLock(&pDevExt->win.s.MouseEventAccessLock, OldIrql);
    829831
     
    940942         * i.e. to prevent the event from destroyed while we're using it */
    941943        KeAcquireSpinLockAtDpcLevel(&pDevExt->win.s.MouseEventAccessLock);
    942         PKEVENT pEvent = pDevExt->win.s.pMouseEvent;
    943         if (pEvent)
    944         {
    945             KeSetEvent(pEvent, 0, FALSE);
     944        if (pDevExt->win.s.pfnMouseNotify)
     945        {
     946            pDevExt->win.s.pfnMouseNotify(pDevExt->win.s.pvMouseNotify);
    946947        }
    947948        KeReleaseSpinLockFromDpcLevel(&pDevExt->win.s.MouseEventAccessLock);
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.h

    r37221 r37226  
    119119
    120120    KSPIN_LOCK MouseEventAccessLock;
    121     /* event to be signalled on mouse event arrival from host */
    122     PKEVENT pMouseEvent;
     121    PFNVBOXMOUSENOTIFYCB pfnMouseNotify;
     122    void *pvMouseNotify;
    123123} VBOXGUESTDEVEXTWIN, *PVBOXGUESTDEVEXTWIN;
    124124
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