VirtualBox

Ignore:
Timestamp:
Dec 9, 2019 3:18:31 AM (5 years ago)
Author:
vboxsync
Message:

SharedClipboardSvc,Vbgl: Reviewed and adjusted the handling of the VBOX_SHCL_GUEST_FN_DATA_WRITE message, paddling back two thirds of the parameter changes from the 6.1 dev cycle and fixing a couple of bugs introduced (buggy code commented out and marked with @todos). Fixing the broadcast approach of VBOX_SHCL_GUEST_FN_FORMATS_REPORT as the host doesn't want to know about clipboard stuff when VRDE clients are using the clipboard. Also documented the message. bugref:9437

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp

    r82500 r82506  
    23952395    LogFlowFuncEnter();
    23962396
    2397     VBoxShClWriteDataMsg Msg;
    2398     RT_ZERO(Msg);
    2399 
    2400     VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient,
    2401                        VBOX_SHCL_GUEST_FN_DATA_WRITE, 2);
    2402 
    2403     VbglHGCMParmUInt32Set(&Msg.u.v0.format, fFormat);
    2404     VbglHGCMParmPtrSet(&Msg.u.v0.ptr, pv, cb);
    2405 
    2406     int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
     2397    struct
     2398    {
     2399        VBGLIOCHGCMCALL             Hdr;
     2400        VBoxShClParmDataWriteOld    Parms;
     2401    } Msg;
     2402
     2403    VBGL_HGCM_HDR_INIT(&Msg.Hdr, idClient, VBOX_SHCL_GUEST_FN_DATA_WRITE, VBOX_SHCL_CPARMS_DATA_WRITE_OLD);
     2404    VbglHGCMParmUInt32Set(&Msg.Parms.f32Format, fFormat);
     2405    VbglHGCMParmPtrSet(&Msg.Parms.pData, pv, cb);
     2406
     2407    int rc = VbglR3HGCMCall(&Msg.Hdr, sizeof(Msg));
    24072408
    24082409    LogFlowFuncLeaveRC(rc);
     
    24352436    else
    24362437    {
    2437         VBoxShClWriteDataMsg Msg;
    2438         RT_ZERO(Msg);
    2439 
    2440         VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID,
    2441                            VBOX_SHCL_GUEST_FN_DATA_WRITE, VBOX_SHCL_CPARMS_WRITE_DATA);
     2438        struct
     2439        {
     2440            VBGLIOCHGCMCALL         Hdr;
     2441            VBoxShClParmDataWrite   Parms;
     2442        } Msg;
     2443
     2444        VBGL_HGCM_HDR_INIT(&Msg.Hdr, pCtx->uClientID, VBOX_SHCL_GUEST_FN_DATA_WRITE, VBOX_SHCL_CPARMS_DATA_WRITE);
     2445        Msg.Parms.id64Context.SetUInt64(pCtx->uContextID);
     2446        Msg.Parms.f32Format.SetUInt32(pData->uFormat);
     2447        Msg.Parms.pData.SetPtr(pData->pvData, pData->cbData);
    24422448
    24432449        LogFlowFunc(("CID=%RU32\n", pCtx->uContextID));
    24442450
    2445         Msg.u.v1.uContext.SetUInt64(pCtx->uContextID);
    2446         Msg.u.v1.uFormat.SetUInt32(pData->uFormat);
    2447         Msg.u.v1.fFlags.SetUInt32(0);
    2448         Msg.u.v1.cbData.SetUInt32(pData->cbData);
    2449         Msg.u.v1.pvData.SetPtr(pData->pvData, pData->cbData);
    2450 
    2451         rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     2451        rc = VbglR3HGCMCall(&Msg.Hdr, sizeof(Msg));
    24522452    }
    24532453
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