VirtualBox

Changeset 108787 in vbox for trunk/src


Ignore:
Timestamp:
Mar 28, 2025 7:34:05 PM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168222
Message:

Additions: Linux/Wayland/VBoxClient: Add IPC workflow definitions for DnD, bugref:10796.

Location:
trunk/src/VBox/Additions/x11/VBoxClient
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.cpp

    r106808 r108787  
    153153}
    154154
    155 int vbcl::ipc::packet_read(uint32_t uSessionId, RTLOCALIPCSESSION hSession, void **ppvData)
     155int vbcl::ipc::packet_read(uint32_t uSessionId, RTLOCALIPCSESSION hSession, uint32_t msTimeout, void **ppvData)
    156156{
    157157    int rc;
     
    161161    AssertPtrReturn(ppvData, VERR_INVALID_PARAMETER);
    162162
    163     rc = RTLocalIpcSessionWaitForData(hSession, VBOX_GTKIPC_RX_TIMEOUT_MS);
     163    rc = RTLocalIpcSessionWaitForData(hSession, msTimeout);
    164164    if (RT_SUCCESS(rc))
    165165    {
     
    285285    SHCLFORMATS fFormats = VBOX_SHCL_FMT_NONE;
    286286
    287     rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, (void **)&pPacket);
     287    rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, m_fFmts.timeout(), (void **)&pPacket);
    288288    if (RT_SUCCESS(rc))
    289289    {
     
    342342    SHCLFORMATS uFormat = VBOX_SHCL_FMT_NONE;
    343343
    344     rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, (void **)&pPacket);
     344    rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, m_uFmt.timeout(), (void **)&pPacket);
    345345    if (RT_SUCCESS(rc))
    346346    {
     
    409409    uint32_t cbData = 0;
    410410
    411     rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, (void **)&pPacket);
     411    rc = vbcl::ipc::packet_read(uSessionId, hIpcSession, m_pvDataBuf.timeout(), (void **)&pPacket);
    412412    if (RT_SUCCESS(rc))
    413413    {
  • trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.h

    r106808 r108787  
    6363/** IPC server socket name prefixes. */
    6464#define VBOXWL_SRV_NAME_PREFIX_CLIP     "clip"
     65#define VBOXWL_SRV_NAME_PREFIX_DND      "dnd"
    6566
    6667/** Arguments to vboxwl tool. */
     
    6869#define VBOXWL_ARG_CLIP_GH_ANNOUNCE     "--clip-gh-announce"
    6970#define VBOXWL_ARG_CLIP_GH_COPY         "--clip-gh-copy"
     71#define VBOXWL_ARG_DND_GH               "--dnd-gh"
     72#define VBOXWL_ARG_DND_HG               "--dnd-hg"
    7073#define VBOXWL_ARG_SESSION_ID           "--session-id"
    7174
     
    147150         * @param   uSessionId      IPC session ID.
    148151         * @param   hSession        IPC session handle.
     152         * @param   mcTimeout       Read operation timeout in milliseconds.
    149153         * @param   ppvData         Output buffer structured as validated
    150154         *                          IPC packet (contains size inside).
    151155         */
    152         int packet_read(uint32_t uSessionId, RTLOCALIPCSESSION hSession, void **ppvData);
     156        int packet_read(uint32_t uSessionId, RTLOCALIPCSESSION hSession, uint32_t msTimeout, void **ppvData);
    153157
    154158        /**
     
    195199             */
    196200
    197             /** IPC flow description: Copy clipboard from host to guest. */
     201            /** IPC flow description (clipboard): Copy clipboard from host to guest. */
    198202            const flow_t HGCopyFlow[4] =
    199203            {
     
    204208            };
    205209
    206             /** IPC flow description: Copy clipboard from guest to host. */
     210            /** IPC flow description (clipboard): Copy clipboard from guest to host. */
    207211            const flow_t GHCopyFlow[3] =
    208212            {
     
    212216            };
    213217
    214             /** IPC flow description: Announce guest's clipboard to the host
     218            /** IPC flow description (clipboard): Announce guest's clipboard to the host
    215219             *  and copy it to the host in format selected by host. */
    216220            const flow_t GHAnnounceAndCopyFlow[4] =
     
    219223                { VBOX_FORMAT,  FLOW_DIRECTION_CLIENT },
    220224                { VBOX_DATA,    FLOW_DIRECTION_SERVER },
     225                { CMD_MAX,      false }
     226            };
     227
     228            /** IPC flow description (DnD): DnD operation started inside guest and
     229             *  guest reports DnD content mime-type list. Host side picks up one
     230             *  of the formats and requests data in this format. Guest sends
     231             *  data in requested format. */
     232            const flow_t GHDragFlow[4] =
     233            {
     234                { VBOX_FORMATS, FLOW_DIRECTION_SERVER },
     235                { VBOX_FORMAT,  FLOW_DIRECTION_CLIENT },
     236                { VBOX_DATA,    FLOW_DIRECTION_SERVER },
     237                { CMD_MAX,      false }
     238            };
     239
     240            /** IPC flow description (DnD): DnD operation started on host and
     241             *  host reports DnD content mime-type list. Guest side picks up one
     242             *  of the formats and requests data in this format. Host sends
     243             *  data in requested format. */
     244            const flow_t HGDragFlow[4] =
     245            {
     246                { VBOX_FORMATS, FLOW_DIRECTION_CLIENT },
     247                { VBOX_FORMAT,  FLOW_DIRECTION_SERVER },
     248                { VBOX_DATA,    FLOW_DIRECTION_CLIENT },
    221249                { CMD_MAX,      false }
    222250            };
Note: See TracChangeset for help on using the changeset viewer.

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