VirtualBox

Changeset 79675 in vbox


Ignore:
Timestamp:
Jul 10, 2019 2:12:14 PM (5 years ago)
Author:
vboxsync
Message:

PDM: Added a way to directly queue HID usage based keyboard events.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Input/DrvKeyboardQueue.cpp

    r76553 r79675  
    206206
    207207/**
    208  * Queues a keyboard event.
     208 * Queues a scancode-based keyboard event.
    209209 * Because of the event queueing the EMT context requirement is lifted.
    210210 *
     
    262262
    263263
     264/**
     265 * Queues a HID-usage-based keyboard event.
     266 * Because of the event queueing the EMT context requirement is lifted.
     267 *
     268 * @returns VBox status code.
     269 * @param   pInterface          Pointer to this interface structure.
     270 * @param   u32UsageCode        The HID usage code to queue.
     271 * @thread  Any thread.
     272 */
     273static DECLCALLBACK(int) drvKbdQueuePutEventHid(PPDMIKEYBOARDPORT pInterface, uint32_t u32UsageCode)
     274{
     275    PDRVKBDQUEUE pDrv = IKEYBOARDPORT_2_DRVKBDQUEUE(pInterface);
     276    /* Ignore any attempt to send events if queue is inactive. */
     277    if (pDrv->fInactive)
     278        return VINF_SUCCESS;
     279
     280    PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDMQueueAlloc(pDrv->pQueue);
     281    if (pItem)
     282    {
     283        pItem->u32UsageCode = u32UsageCode;
     284        PDMQueueInsert(pDrv->pQueue, &pItem->Core);
     285
     286        return VINF_SUCCESS;
     287    }
     288    if (!pDrv->fSuspended)
     289        AssertMsgFailed(("drvKbdQueuePutEventHid: Queue is full!!!!\n"));
     290    return VERR_PDM_NO_QUEUE_ITEMS;
     291}
     292
     293
    264294/* -=-=-=-=- IConnector -=-=-=-=- */
    265295
     
    425455    /* IKeyboardPort. */
    426456    pDrv->IPort.pfnPutEventScan             = drvKbdQueuePutEventScan;
     457    pDrv->IPort.pfnPutEventHid              = drvKbdQueuePutEventHid;
    427458
    428459    /*
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