Changeset 106788 in vbox for trunk/src/VBox/Additions/x11/VBoxClient
- Timestamp:
- Oct 30, 2024 12:04:20 PM (5 months ago)
- svn:sync-xref-src-repo-rev:
- 165683
- Location:
- trunk/src/VBox/Additions/x11/VBoxClient
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/x11/VBoxClient/vboxwl.cpp
r106786 r106788 91 91 92 92 /** Clipboard IPC flow object. */ 93 vbcl::ipc:: clipboard::ClipboardIpc *g_oClipboardIpc;93 vbcl::ipc::data::DataIpc *g_oDataIpc; 94 94 95 95 … … 133 133 if (RT_SUCCESS(rc)) 134 134 { 135 g_o ClipboardIpc->m_pvClipboardBuf.set((uint64_t)pvBufOut);136 g_o ClipboardIpc->m_cbClipboardBuf.set((uint64_t)cbBufOut);135 g_oDataIpc->m_pvClipboardBuf.set((uint64_t)pvBufOut); 136 g_oDataIpc->m_cbClipboardBuf.set((uint64_t)cbBufOut); 137 137 g_tsGtkQuit = RTTimeMilliTS(); 138 138 } … … 225 225 226 226 /* Set formats to be sent to the host. */ 227 g_o ClipboardIpc->m_fFmts.set(fFormats);227 g_oDataIpc->m_fFmts.set(fFormats); 228 228 229 229 /* Wait for host to send clipboard format it wants to copy from guest. */ 230 uFmt = g_o ClipboardIpc->m_uFmt.wait();231 if (uFmt != g_o ClipboardIpc->m_uFmt.defaults())230 uFmt = g_oDataIpc->m_uFmt.wait(); 231 if (uFmt != g_oDataIpc->m_uFmt.defaults()) 232 232 { 233 233 /* Find target which matches to host format among reported by guest. */ … … 274 274 275 275 /* Set clipboard format which guest wants to send it to the host. */ 276 g_o ClipboardIpc->m_uFmt.set(uFmt);276 g_oDataIpc->m_uFmt.set(uFmt); 277 277 278 278 /* Wait for the host to send clipboard data in requested format. */ 279 uint32_t cbBuf = g_o ClipboardIpc->m_cbClipboardBuf.wait();280 void *pvBuf = (void *)g_o ClipboardIpc->m_pvClipboardBuf.wait();281 282 if ( cbBuf != g_o ClipboardIpc->m_cbClipboardBuf.defaults()283 && pvBuf != (void *)g_o ClipboardIpc->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()) 284 284 { 285 285 void *pBufOut; … … 362 362 363 363 /* Wait for host to report available clipboard formats from its buffer. */ 364 fFmts = g_o ClipboardIpc->m_fFmts.wait();365 if (fFmts != g_o ClipboardIpc->m_fFmts.defaults())364 fFmts = g_oDataIpc->m_fFmts.wait(); 365 if (fFmts != g_oDataIpc->m_fFmts.defaults()) 366 366 { 367 367 GtkTargetList *aTargetList = gtk_target_list_new(0, 0); … … 524 524 525 525 if (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_GUEST) 526 rc = g_o ClipboardIpc->flow(vbcl::ipc::clipboard::HGCopyFlow, hIpcSession);526 rc = g_oDataIpc->flow(vbcl::ipc::data::HGCopyFlow, hIpcSession); 527 527 else if (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_ANNOUNCE_TO_HOST) 528 rc = g_o ClipboardIpc->flow(vbcl::ipc::clipboard::GHAnnounceAndCopyFlow, hIpcSession);528 rc = g_oDataIpc->flow(vbcl::ipc::data::GHAnnounceAndCopyFlow, hIpcSession); 529 529 else if (g_enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_HOST) 530 rc = g_o ClipboardIpc->flow(vbcl::ipc::clipboard::GHCopyFlow, hIpcSession);530 rc = g_oDataIpc->flow(vbcl::ipc::data::GHCopyFlow, hIpcSession); 531 531 532 532 return rc; … … 579 579 if (RT_SUCCESS(rc)) 580 580 { 581 g_o ClipboardIpc = new vbcl::ipc::clipboard::ClipboardIpc();582 if (RT_VALID_PTR(g_o ClipboardIpc))581 g_oDataIpc = new vbcl::ipc::data::DataIpc(); 582 if (RT_VALID_PTR(g_oDataIpc)) 583 583 { 584 g_o ClipboardIpc->init(vbcl::ipc::FLOW_DIRECTION_CLIENT, g_uSessionId);584 g_oDataIpc->init(vbcl::ipc::FLOW_DIRECTION_CLIENT, g_uSessionId); 585 585 586 586 rc = vboxwl_ipc_flow(hIpcSession); … … 596 596 g_uSessionId, rc, rcThread); 597 597 598 g_o ClipboardIpc->reset();599 delete g_o ClipboardIpc;598 g_oDataIpc->reset(); 599 delete g_oDataIpc; 600 600 } 601 601 else -
trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-gtk.cpp
r106786 r106788 57 57 uint32_t uSessionId; 58 58 /** IPC connection flow control between VBoxClient and vboxwl tool. */ 59 vbcl::ipc:: clipboard::ClipboardIpc *oClipboardIpc;59 vbcl::ipc::data::DataIpc *oDataIpc; 60 60 /** IPC connection handle. */ 61 61 RTLOCALIPCSESSION hIpcSession; … … 178 178 pSession->uSessionId = RTRandU32Ex(1, 0xFFFFFFFF); 179 179 180 pSession->o ClipboardIpc = new vbcl::ipc::clipboard::ClipboardIpc();181 if (RT_VALID_PTR(pSession->o ClipboardIpc))182 { 183 pSession->o ClipboardIpc->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, 184 184 pSession->uSessionId); 185 185 } … … 250 250 pSession->uSessionId = 0; 251 251 252 pSession->o ClipboardIpc->reset();253 delete pSession->o ClipboardIpc;252 pSession->oDataIpc->reset(); 253 delete pSession->oDataIpc; 254 254 } 255 255 … … 283 283 /* Select corresponding IPC flow depending on session type. */ 284 284 if (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_GUEST) 285 pFlow = vbcl::ipc:: clipboard::HGCopyFlow;285 pFlow = vbcl::ipc::data::HGCopyFlow; 286 286 else if (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_ANNOUNCE_TO_HOST) 287 pFlow = vbcl::ipc:: clipboard::GHAnnounceAndCopyFlow;287 pFlow = vbcl::ipc::data::GHAnnounceAndCopyFlow; 288 288 else if (enmSessionType == VBCL_WL_CLIPBOARD_SESSION_TYPE_COPY_TO_HOST) 289 pFlow = vbcl::ipc:: clipboard::GHCopyFlow;289 pFlow = vbcl::ipc::data::GHCopyFlow; 290 290 else 291 291 { … … 296 296 /* Proceed with selected flow. */ 297 297 if (RT_VALID_PTR(pFlow)) 298 rc = g_GtkCtx.Session.o ClipboardIpc->flow(pFlow, *phIpcSession);298 rc = g_GtkCtx.Session.oDataIpc->flow(pFlow, *phIpcSession); 299 299 300 300 return rc; … … 473 473 if (RT_SUCCESS(rc)) 474 474 { 475 SHCLFORMATS fFmts = g_GtkCtx.Session.o ClipboardIpc->m_fFmts.wait();476 if (fFmts != g_GtkCtx.Session.o ClipboardIpc->m_fFmts.defaults())475 SHCLFORMATS fFmts = g_GtkCtx.Session.oDataIpc->m_fFmts.wait(); 476 if (fFmts != g_GtkCtx.Session.oDataIpc->m_fFmts.defaults()) 477 477 rc = VbglR3ClipboardReportFormats(g_GtkCtx.pClipboardCtx->idClient, fFmts); 478 478 else … … 538 538 if (RT_SUCCESS(rc)) 539 539 { 540 g_GtkCtx.Session.o ClipboardIpc->m_fFmts.set(*pfFmts);541 542 uFmt = g_GtkCtx.Session.o ClipboardIpc->m_uFmt.wait();543 if (uFmt != g_GtkCtx.Session.o ClipboardIpc->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()) 544 544 { 545 545 void *pvData; … … 549 549 if (RT_SUCCESS(rc)) 550 550 { 551 g_GtkCtx.Session.o ClipboardIpc->m_pvClipboardBuf.set((uint64_t)pvData);552 g_GtkCtx.Session.o ClipboardIpc->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); 553 553 } 554 554 } … … 620 620 621 621 /* Store requested clipboard format to the session. */ 622 g_GtkCtx.Session.o ClipboardIpc->m_uFmt.set(*puFmt);622 g_GtkCtx.Session.oDataIpc->m_uFmt.set(*puFmt); 623 623 624 624 /* Wait for data in requested format. */ 625 pvData = (void *)g_GtkCtx.Session.o ClipboardIpc->m_pvClipboardBuf.wait();626 cbData = g_GtkCtx.Session.o ClipboardIpc->m_cbClipboardBuf.wait();627 if ( cbData != g_GtkCtx.Session.o ClipboardIpc->m_cbClipboardBuf.defaults()628 && pvData != (void *)g_GtkCtx.Session.o ClipboardIpc->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()) 629 629 { 630 630 /* Send clipboard data to the host. */ -
trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.cpp
r106061 r106788 117 117 case vbcl::ipc::CLIP_FORMATS: 118 118 case vbcl::ipc::CLIP_FORMAT: 119 cbPayload = sizeof(vbcl::ipc:: clipboard::formats_packet_t);119 cbPayload = sizeof(vbcl::ipc::data::formats_packet_t); 120 120 break; 121 121 122 122 case vbcl::ipc::CLIP_DATA: 123 123 { 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; 126 126 break; 127 127 } … … 245 245 } 246 246 247 int vbcl::ipc:: clipboard::ClipboardIpc::send_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)248 { 249 vbcl::ipc:: clipboard::formats_packet_t Packet;247 int vbcl::ipc::data::DataIpc::send_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 248 { 249 vbcl::ipc::data::formats_packet_t Packet; 250 250 SHCLFORMATS fFormats; 251 251 int rc = VINF_SUCCESS; … … 273 273 } 274 274 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;275 int vbcl::ipc::data::DataIpc::recv_formats(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 276 { 277 int rc; 278 vbcl::ipc::data::formats_packet_t *pPacket; 279 279 vbcl::ipc::command_t idCmd = CMD_UNKNOWN; 280 280 SHCLFORMATS fFormats = VBOX_SHCL_FMT_NONE; … … 302 302 } 303 303 304 int vbcl::ipc:: clipboard::ClipboardIpc::send_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)305 { 306 vbcl::ipc:: clipboard::formats_packet_t Packet;304 int vbcl::ipc::data::DataIpc::send_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 305 { 306 vbcl::ipc::data::formats_packet_t Packet; 307 307 SHCLFORMAT uFormat; 308 308 int rc = VINF_SUCCESS; … … 330 330 } 331 331 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;332 int vbcl::ipc::data::DataIpc::recv_format(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 333 { 334 int rc; 335 vbcl::ipc::data::formats_packet_t *pPacket; 336 336 vbcl::ipc::command_t idCmd = CMD_UNKNOWN; 337 337 SHCLFORMATS uFormat = VBOX_SHCL_FMT_NONE; … … 359 359 } 360 360 361 int vbcl::ipc:: clipboard::ClipboardIpc::send_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession)362 { 363 vbcl::ipc:: clipboard::data_packet_t *pPacket;361 int vbcl::ipc::data::DataIpc::send_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 362 { 363 vbcl::ipc::data::data_packet_t *pPacket; 364 364 int rc = VINF_SUCCESS; 365 365 … … 372 372 && pvData != (void *)m_pvClipboardBuf.defaults()) 373 373 { 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); 375 375 if (RT_VALID_PTR(pPacket)) 376 376 { … … 378 378 pPacket->Hdr.uSessionId = uSessionId; 379 379 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; 381 381 pPacket->cbData = cbData; 382 382 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); 384 384 rc = vbcl::ipc::packet_write(hIpcSession, &pPacket->Hdr); 385 385 RTMemFree(pPacket); … … 397 397 } 398 398 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;399 int vbcl::ipc::data::DataIpc::recv_data(uint32_t uSessionId, RTLOCALIPCSESSION hIpcSession) 400 { 401 int rc; 402 vbcl::ipc::data::data_packet_t *pPacket; 403 403 vbcl::ipc::command_t idCmd = CMD_UNKNOWN; 404 404 uint32_t cbData = 0; … … 414 414 if (RT_VALID_PTR(pvData)) 415 415 { 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); 417 417 m_pvClipboardBuf.set((uint64_t)pvData); 418 418 cbData = pPacket->cbData; -
trunk/src/VBox/Additions/x11/VBoxClient/wayland-helper-ipc.h
r106741 r106788 158 158 int packet_write(RTLOCALIPCSESSION hSession, vbcl::ipc::packet_t *pPacket); 159 159 160 namespace clipboard160 namespace data 161 161 { 162 162 /** Payload for IPC commands CLIP_FORMATS and CLIP_FORMAT. */ … … 219 219 }; 220 220 221 class ClipboardIpc221 class DataIpc 222 222 { 223 223 public: … … 226 226 RTMEM_IMPLEMENT_NEW_AND_DELETE(); 227 227 #endif 228 ClipboardIpc()228 DataIpc() 229 229 {} 230 230
Note:
See TracChangeset
for help on using the changeset viewer.