VirtualBox

Ignore:
Timestamp:
Oct 30, 2024 12:04:20 PM (5 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165683
Message:

Additions: Linux/Wayland: Rename IPC stuff to be more generic (for both Clipboard and DnD), bugref:10796.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/vboxwl.cpp

    r106786 r106788  
    9191
    9292/** Clipboard IPC flow object. */
    93 vbcl::ipc::clipboard::ClipboardIpc *g_oClipboardIpc;
     93vbcl::ipc::data::DataIpc *g_oDataIpc;
    9494
    9595
     
    133133            if (RT_SUCCESS(rc))
    134134            {
    135                 g_oClipboardIpc->m_pvClipboardBuf.set((uint64_t)pvBufOut);
    136                 g_oClipboardIpc->m_cbClipboardBuf.set((uint64_t)cbBufOut);
     135                g_oDataIpc->m_pvClipboardBuf.set((uint64_t)pvBufOut);
     136                g_oDataIpc->m_cbClipboardBuf.set((uint64_t)cbBufOut);
    137137                g_tsGtkQuit = RTTimeMilliTS();
    138138            }
     
    225225
    226226        /* Set formats to be sent to the host. */
    227         g_oClipboardIpc->m_fFmts.set(fFormats);
     227        g_oDataIpc->m_fFmts.set(fFormats);
    228228
    229229        /* Wait for host to send clipboard format it wants to copy from guest. */
    230         uFmt = g_oClipboardIpc->m_uFmt.wait();
    231         if (uFmt != g_oClipboardIpc->m_uFmt.defaults())
     230        uFmt = g_oDataIpc->m_uFmt.wait();
     231        if (uFmt != g_oDataIpc->m_uFmt.defaults())
    232232        {
    233233            /* Find target which matches to host format among reported by guest. */
     
    274274
    275275    /* Set clipboard format which guest wants to send it to the host. */
    276     g_oClipboardIpc->m_uFmt.set(uFmt);
     276    g_oDataIpc->m_uFmt.set(uFmt);
    277277
    278278    /* Wait for the host to send clipboard data in requested format. */
    279     uint32_t cbBuf = g_oClipboardIpc->m_cbClipboardBuf.wait();
    280     void *pvBuf = (void *)g_oClipboardIpc->m_pvClipboardBuf.wait();
    281 
    282     if (   cbBuf != g_oClipboardIpc->m_cbClipboardBuf.defaults()
    283         && pvBuf != (void *)g_oClipboardIpc->m_pvClipboardBuf.defaults())
     279    uint32_t cbBuf = g_oDataIpc->m_cbClipboardBuf.wait();
     280    void *pvBuf = (void *)g_oDataIpc->m_pvClipboardBuf.wait();
     281
     282    if (   cbBuf != g_oDataIpc->m_cbClipboardBuf.defaults()
     283        && pvBuf != (void *)g_oDataIpc->m_pvClipboardBuf.defaults())
    284284    {
    285285        void *pBufOut;
     
    362362
    363363    /* Wait for host to report available clipboard formats from its buffer. */
    364     fFmts = g_oClipboardIpc->m_fFmts.wait();
    365     if (fFmts != g_oClipboardIpc->m_fFmts.defaults())
     364    fFmts = g_oDataIpc->m_fFmts.wait();
     365    if (fFmts != g_oDataIpc->m_fFmts.defaults())
    366366    {
    367367        GtkTargetList *aTargetList = gtk_target_list_new(0, 0);
     
    524524
    525525    if      (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_GUEST)
    526         rc = g_oClipboardIpc->flow(vbcl::ipc::clipboard::HGCopyFlow, hIpcSession);
     526        rc = g_oDataIpc->flow(vbcl::ipc::data::HGCopyFlow, hIpcSession);
    527527    else if (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_ANNOUNCE_TO_HOST)
    528         rc = g_oClipboardIpc->flow(vbcl::ipc::clipboard::GHAnnounceAndCopyFlow, hIpcSession);
     528        rc = g_oDataIpc->flow(vbcl::ipc::data::GHAnnounceAndCopyFlow, hIpcSession);
    529529    else if (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_HOST)
    530         rc = g_oClipboardIpc->flow(vbcl::ipc::clipboard::GHCopyFlow, hIpcSession);
     530        rc = g_oDataIpc->flow(vbcl::ipc::data::GHCopyFlow, hIpcSession);
    531531
    532532    return rc;
     
    579579        if (RT_SUCCESS(rc))
    580580        {
    581             g_oClipboardIpc = new vbcl::ipc::clipboard::ClipboardIpc();
    582             if (RT_VALID_PTR(g_oClipboardIpc))
     581            g_oDataIpc = new vbcl::ipc::data::DataIpc();
     582            if (RT_VALID_PTR(g_oDataIpc))
    583583            {
    584                 g_oClipboardIpc->init(vbcl::ipc::FLOW_DIRECTION_CLIENT, g_uSessionId);
     584                g_oDataIpc->init(vbcl::ipc::FLOW_DIRECTION_CLIENT, g_uSessionId);
    585585
    586586                rc = vboxwl_ipc_flow(hIpcSession);
     
    596596                            g_uSessionId, rc, rcThread);
    597597
    598                 g_oClipboardIpc->reset();
    599                 delete g_oClipboardIpc;
     598                g_oDataIpc->reset();
     599                delete g_oDataIpc;
    600600            }
    601601            else
  • trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-gtk.cpp

    r106786 r106788  
    5757    uint32_t                                uSessionId;
    5858    /** IPC connection flow control between VBoxClient and vboxwl tool. */
    59     vbcl::ipc::clipboard::ClipboardIpc      *oClipboardIpc;
     59    vbcl::ipc::data::DataIpc                *oDataIpc;
    6060    /** IPC connection handle. */
    6161    RTLOCALIPCSESSION                       hIpcSession;
     
    178178    pSession->uSessionId = RTRandU32Ex(1, 0xFFFFFFFF);
    179179
    180     pSession->oClipboardIpc = new vbcl::ipc::clipboard::ClipboardIpc();
    181     if (RT_VALID_PTR(pSession->oClipboardIpc))
    182     {
    183         pSession->oClipboardIpc->init(vbcl::ipc::FLOW_DIRECTION_SERVER,
     180    pSession->oDataIpc = new vbcl::ipc::data::DataIpc();
     181    if (RT_VALID_PTR(pSession->oDataIpc))
     182    {
     183        pSession->oDataIpc->init(vbcl::ipc::FLOW_DIRECTION_SERVER,
    184184                                      pSession->uSessionId);
    185185    }
     
    250250        pSession->uSessionId = 0;
    251251
    252         pSession->oClipboardIpc->reset();
    253         delete pSession->oClipboardIpc;
     252        pSession->oDataIpc->reset();
     253        delete pSession->oDataIpc;
    254254    }
    255255
     
    283283    /* Select corresponding IPC flow depending on session type. */
    284284    if      (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_GUEST)
    285         pFlow = vbcl::ipc::clipboard::HGCopyFlow;
     285        pFlow = vbcl::ipc::data::HGCopyFlow;
    286286    else if (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_ANNOUNCE_TO_HOST)
    287         pFlow = vbcl::ipc::clipboard::GHAnnounceAndCopyFlow;
     287        pFlow = vbcl::ipc::data::GHAnnounceAndCopyFlow;
    288288    else if (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_HOST)
    289         pFlow = vbcl::ipc::clipboard::GHCopyFlow;
     289        pFlow = vbcl::ipc::data::GHCopyFlow;
    290290    else
    291291    {
     
    296296    /* Proceed with selected flow. */
    297297    if (RT_VALID_PTR(pFlow))
    298         rc = g_GtkCtx.Session.oClipboardIpc->flow(pFlow, *phIpcSession);
     298        rc = g_GtkCtx.Session.oDataIpc->flow(pFlow, *phIpcSession);
    299299
    300300    return rc;
     
    473473    if (RT_SUCCESS(rc))
    474474    {
    475         SHCLFORMATS fFmts = g_GtkCtx.Session.oClipboardIpc->m_fFmts.wait();
    476         if (fFmts !=  g_GtkCtx.Session.oClipboardIpc->m_fFmts.defaults())
     475        SHCLFORMATS fFmts = g_GtkCtx.Session.oDataIpc->m_fFmts.wait();
     476        if (fFmts !=  g_GtkCtx.Session.oDataIpc->m_fFmts.defaults())
    477477            rc = VbglR3ClipboardReportFormats(g_GtkCtx.pClipboardCtx->idClient, fFmts);
    478478        else
     
    538538    if (RT_SUCCESS(rc))
    539539    {
    540         g_GtkCtx.Session.oClipboardIpc->m_fFmts.set(*pfFmts);
    541 
    542         uFmt = g_GtkCtx.Session.oClipboardIpc->m_uFmt.wait();
    543         if (uFmt != g_GtkCtx.Session.oClipboardIpc->m_uFmt.defaults())
     540        g_GtkCtx.Session.oDataIpc->m_fFmts.set(*pfFmts);
     541
     542        uFmt = g_GtkCtx.Session.oDataIpc->m_uFmt.wait();
     543        if (uFmt != g_GtkCtx.Session.oDataIpc->m_uFmt.defaults())
    544544        {
    545545            void *pvData;
     
    549549            if (RT_SUCCESS(rc))
    550550            {
    551                 g_GtkCtx.Session.oClipboardIpc->m_pvClipboardBuf.set((uint64_t)pvData);
    552                 g_GtkCtx.Session.oClipboardIpc->m_cbClipboardBuf.set((uint64_t)cbData);
     551                g_GtkCtx.Session.oDataIpc->m_pvClipboardBuf.set((uint64_t)pvData);
     552                g_GtkCtx.Session.oDataIpc->m_cbClipboardBuf.set((uint64_t)cbData);
    553553            }
    554554        }
     
    620620
    621621        /* Store requested clipboard format to the session. */
    622         g_GtkCtx.Session.oClipboardIpc->m_uFmt.set(*puFmt);
     622        g_GtkCtx.Session.oDataIpc->m_uFmt.set(*puFmt);
    623623
    624624        /* Wait for data in requested format. */
    625         pvData = (void *)g_GtkCtx.Session.oClipboardIpc->m_pvClipboardBuf.wait();
    626         cbData = g_GtkCtx.Session.oClipboardIpc->m_cbClipboardBuf.wait();
    627         if (   cbData != g_GtkCtx.Session.oClipboardIpc->m_cbClipboardBuf.defaults()
    628             && pvData != (void *)g_GtkCtx.Session.oClipboardIpc->m_pvClipboardBuf.defaults())
     625        pvData = (void *)g_GtkCtx.Session.oDataIpc->m_pvClipboardBuf.wait();
     626        cbData = g_GtkCtx.Session.oDataIpc->m_cbClipboardBuf.wait();
     627        if (   cbData != g_GtkCtx.Session.oDataIpc->m_cbClipboardBuf.defaults()
     628            && pvData != (void *)g_GtkCtx.Session.oDataIpc->m_pvClipboardBuf.defaults())
    629629        {
    630630            /* Send clipboard data to the host. */
  • trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.cpp

    r106061 r106788  
    117117                case vbcl::ipc::CLIP_FORMATS:
    118118                case vbcl::ipc::CLIP_FORMAT:
    119                     cbPayload = sizeof(vbcl::ipc::clipboard::formats_packet_t);
     119                    cbPayload = sizeof(vbcl::ipc::data::formats_packet_t);
    120120                    break;
    121121
    122122                case vbcl::ipc::CLIP_DATA:
    123123                {
    124                     vbcl::ipc::clipboard::data_packet_t *pDataEx = (vbcl::ipc::clipboard::data_packet_t *)pPacket;
    125                     cbPayload = sizeof(vbcl::ipc::clipboard::data_packet_t) + pDataEx->cbData;
     124                    vbcl::ipc::data::data_packet_t *pDataEx = (vbcl::ipc::data::data_packet_t *)pPacket;
     125                    cbPayload = sizeof(vbcl::ipc::data::data_packet_t) + pDataEx->cbData;
    126126                    break;
    127127                }
     
    245245}
    246246
    247 int vbcl::ipc::clipboard::ClipboardIpc::send_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    248 {
    249     vbcl::ipc::clipboard::formats_packet_t Packet;
     247int vbcl::ipc::data::DataIpc::send_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     248{
     249    vbcl::ipc::data::formats_packet_t Packet;
    250250    SHCLFORMATS fFormats;
    251251    int rc = VINF_SUCCESS;
     
    273273}
    274274
    275 int vbcl::ipc::clipboard::ClipboardIpc::recv_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    276 {
    277     int rc;
    278     vbcl::ipc::clipboard::formats_packet_t *pPacket;
     275int vbcl::ipc::data::DataIpc::recv_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     276{
     277    int rc;
     278    vbcl::ipc::data::formats_packet_t *pPacket;
    279279    vbcl::ipc::command_t idCmd = CMD_UNKNOWN;
    280280    SHCLFORMATS fFormats = VBOX_SHCL_FMT_NONE;
     
    302302}
    303303
    304 int vbcl::ipc::clipboard::ClipboardIpc::send_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    305 {
    306     vbcl::ipc::clipboard::formats_packet_t Packet;
     304int vbcl::ipc::data::DataIpc::send_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     305{
     306    vbcl::ipc::data::formats_packet_t Packet;
    307307    SHCLFORMAT uFormat;
    308308    int rc = VINF_SUCCESS;
     
    330330}
    331331
    332 int vbcl::ipc::clipboard::ClipboardIpc::recv_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    333 {
    334     int rc;
    335     vbcl::ipc::clipboard::formats_packet_t *pPacket;
     332int vbcl::ipc::data::DataIpc::recv_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     333{
     334    int rc;
     335    vbcl::ipc::data::formats_packet_t *pPacket;
    336336    vbcl::ipc::command_t idCmd = CMD_UNKNOWN;
    337337    SHCLFORMATS uFormat = VBOX_SHCL_FMT_NONE;
     
    359359}
    360360
    361 int vbcl::ipc::clipboard::ClipboardIpc::send_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    362 {
    363     vbcl::ipc::clipboard::data_packet_t *pPacket;
     361int vbcl::ipc::data::DataIpc::send_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     362{
     363    vbcl::ipc::data::data_packet_t *pPacket;
    364364    int rc = VINF_SUCCESS;
    365365
     
    372372        && pvData != (void *)m_pvClipboardBuf.defaults())
    373373    {
    374         pPacket = (vbcl::ipc::clipboard::data_packet_t *)RTMemAllocZ(sizeof(vbcl::ipc::clipboard::data_packet_t) + cbData);
     374        pPacket = (vbcl::ipc::data::data_packet_t *)RTMemAllocZ(sizeof(vbcl::ipc::data::data_packet_t) + cbData);
    375375        if (RT_VALID_PTR(pPacket))
    376376        {
     
    378378            pPacket->Hdr.uSessionId = uSessionId;
    379379            pPacket->Hdr.idCmd = CLIP_DATA;
    380             pPacket->Hdr.cbData = sizeof(vbcl::ipc::clipboard::data_packet_t) + cbData;
     380            pPacket->Hdr.cbData = sizeof(vbcl::ipc::data::data_packet_t) + cbData;
    381381            pPacket->cbData = cbData;
    382382
    383             memcpy((uint8_t *)pPacket + sizeof(vbcl::ipc::clipboard::data_packet_t), pvData, cbData);
     383            memcpy((uint8_t *)pPacket + sizeof(vbcl::ipc::data::data_packet_t), pvData, cbData);
    384384            rc = vbcl::ipc::packet_write(hIpcSession, &pPacket->Hdr);
    385385            RTMemFree(pPacket);
     
    397397}
    398398
    399 int vbcl::ipc::clipboard::ClipboardIpc::recv_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
    400 {
    401     int rc;
    402     vbcl::ipc::clipboard::data_packet_t *pPacket;
     399int vbcl::ipc::data::DataIpc::recv_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)
     400{
     401    int rc;
     402    vbcl::ipc::data::data_packet_t *pPacket;
    403403    vbcl::ipc::command_t idCmd = CMD_UNKNOWN;
    404404    uint32_t cbData = 0;
     
    414414            if (RT_VALID_PTR(pvData))
    415415            {
    416                 memcpy(pvData, (uint8_t *)pPacket + sizeof(vbcl::ipc::clipboard::data_packet_t), pPacket->cbData);
     416                memcpy(pvData, (uint8_t *)pPacket + sizeof(vbcl::ipc::data::data_packet_t), pPacket->cbData);
    417417                m_pvClipboardBuf.set((uint64_t)pvData);
    418418                cbData = pPacket->cbData;
  • trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.h

    r106741 r106788  
    158158        int packet_write(RTLOCALIPCSESSION hSession, vbcl::ipc::packet_t *pPacket);
    159159
    160         namespace clipboard
     160        namespace data
    161161        {
    162162            /** Payload for IPC commands CLIP_FORMATS and CLIP_FORMAT. */
     
    219219            };
    220220
    221             class ClipboardIpc
     221            class DataIpc
    222222            {
    223223                public:
     
    226226                    RTMEM_IMPLEMENT_NEW_AND_DELETE();
    227227#endif
    228                     ClipboardIpc()
     228                    DataIpc()
    229229                    {}
    230230
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