Changeset 97748 in vbox
- Timestamp:
- Dec 6, 2022 9:26:48 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 154809
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/include/VBox/HostServices/DragAndDropSvc.h ¶
r96407 r97748 217 217 GUEST_DND_FN_GET_NEXT_HOST_MSG = 300, 218 218 219 /** Reports back an error to the host. 220 * 221 * Note: Don't change the ID to also support older hosts 222 * (was GUEST_DND_FN_GH_EVT_ERROR before < 7.0, only for G->H transfers). 223 * 224 * This was changed to GUEST_DND_FN_EVT_ERROR to be a generic event 225 * that also can be used for H->G transfers. 226 * 227 * @retval VINF_SUCCESS on success. 228 * @retval VERR_INVALID_CLIENT_ID 229 * @retval VERR_WRONG_PARAMETER_COUNT 230 * @retval VERR_WRONG_PARAMETER_TYPE 231 * @since 7.0.x 232 */ 233 GUEST_DND_FN_EVT_ERROR = 502, 234 219 235 /* 220 236 * Host -> Guest operation messages. … … 248 264 */ 249 265 GUEST_DND_FN_GH_SND_DATA = 501, 250 /** The guest reports an error back to the host. */251 GUEST_DND_FN_GH_EVT_ERROR = 502,252 266 /** The guest sends a directory entry to the host. */ 253 267 GUEST_DND_FN_GH_SND_DIR = 700, … … 936 950 CB_MAGIC_DND_CONNECT = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_CONNECT, 0), 937 951 CB_MAGIC_DND_REPORT_FEATURES = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_REPORT_FEATURES, 0), 952 CB_MAGIC_DND_EVT_ERROR = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_EVT_ERROR, 0), 938 953 CB_MAGIC_DND_HG_GET_NEXT_HOST_MSG = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GET_NEXT_HOST_MSG, 0), 939 954 CB_MAGIC_DND_HG_ACK_OP = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_HG_ACK_OP, 0), … … 945 960 CB_MAGIC_DND_GH_SND_DIR = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GH_SND_DIR, 0), 946 961 CB_MAGIC_DND_GH_SND_FILE_HDR = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GH_SND_FILE_HDR, 0), 947 CB_MAGIC_DND_GH_SND_FILE_DATA = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GH_SND_FILE_DATA, 0), 948 CB_MAGIC_DND_GH_EVT_ERROR = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GH_EVT_ERROR, 0) 962 CB_MAGIC_DND_GH_SND_FILE_DATA = VBOX_DND_CB_MAGIC_MAKE(GUEST_DND_FN_GH_SND_FILE_DATA, 0) 949 963 }; 950 964 -
TabularUnified trunk/include/VBox/VBoxGuestLib.h ¶
r96885 r97748 1336 1336 1337 1337 VBGLR3DECL(int) VbglR3DnDReportFeatures(uint32_t idClient, uint64_t fGuestFeatures, uint64_t *pfHostFeatures); 1338 VBGLR3DECL(int) VbglR3DnDSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcOp); 1338 1339 1339 1340 VBGLR3DECL(int) VbglR3DnDEventGetNext(PVBGLR3GUESTDNDCMDCTX pCtx, PVBGLR3DNDEVENT *ppEvent); … … 1346 1347 VBGLR3DECL(int) VbglR3DnDGHSendAckPending(PVBGLR3GUESTDNDCMDCTX pCtx, VBOXDNDACTION dndActionDefault, VBOXDNDACTIONLIST dndLstActionsAllowed, const char* pcszFormats, uint32_t cbFormats); 1347 1348 VBGLR3DECL(int) VbglR3DnDGHSendData(PVBGLR3GUESTDNDCMDCTX pCtx, const char *pszFormat, void *pvData, uint32_t cbData); 1348 VBGLR3DECL(int) VbglR3DnDGHSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcOp);1349 1349 # endif /* VBOX_WITH_DRAG_AND_DROP_GH */ 1350 1350 /** @} */ -
TabularUnified trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDnD.cpp ¶
r96407 r97748 1419 1419 * not wait for the data it expects from the guest. 1420 1420 */ 1421 int rc2 = VbglR3DnD GHSendError(&m_cmdCtx, rc);1421 int rc2 = VbglR3DnDSendError(&m_cmdCtx, rc); 1422 1422 AssertRC(rc2); 1423 1423 } -
TabularUnified trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibDragAndDrop.cpp ¶
r97746 r97748 103 103 104 104 } while (rc == VERR_INTERRUPTED); 105 106 return rc; 107 } 108 109 110 /** 111 * Sends a DnD error back to the host. 112 * 113 * @returns IPRT status code. 114 * @param pCtx DnD context to use. 115 * @param rcErr Error (IPRT-style) to send. 116 */ 117 VBGLR3DECL(int) VbglR3DnDSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcErr) 118 { 119 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); 120 121 HGCMMsgGHError Msg; 122 VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, GUEST_DND_FN_EVT_ERROR, 2); 123 /** @todo Context ID not used yet. */ 124 Msg.u.v3.uContext.SetUInt32(0); 125 Msg.u.v3.rc.SetUInt32((uint32_t)rcErr); /* uint32_t vs. int. */ 126 127 int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg)); 128 129 /* 130 * Never return an error if the host did not accept the error at the current 131 * time. This can be due to the host not having any appropriate callbacks 132 * set which would handle that error. 133 * 134 * bird: Looks like VERR_NOT_SUPPORTED is what the host will return if it 135 * doesn't an appropriate callback. The code used to ignore ALL errors 136 * the host would return, also relevant ones. 137 */ 138 if (RT_FAILURE(rc)) 139 LogFlowFunc(("Sending error %Rrc failed with rc=%Rrc\n", rcErr, rc)); 140 if (rc == VERR_NOT_SUPPORTED) 141 rc = VINF_SUCCESS; 105 142 106 143 return rc; … … 1882 1919 if (rc != VERR_CANCELLED) 1883 1920 { 1884 int rc2 = VbglR3DnD GHSendError(pCtx, rc);1921 int rc2 = VbglR3DnDSendError(pCtx, rc); 1885 1922 if (RT_FAILURE(rc2)) 1886 1923 LogFlowFunc(("Unable to send error (%Rrc) to host, rc=%Rrc\n", rc, rc2)); … … 1890 1927 return rc; 1891 1928 } 1892 1893 /**1894 * Guest -> Host1895 * Send an error back to the host.1896 *1897 * @returns IPRT status code.1898 * @param pCtx DnD context to use.1899 * @param rcErr Error (IPRT-style) to send.1900 */1901 VBGLR3DECL(int) VbglR3DnDGHSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcErr)1902 {1903 AssertPtrReturn(pCtx, VERR_INVALID_POINTER);1904 1905 HGCMMsgGHError Msg;1906 VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, GUEST_DND_FN_GH_EVT_ERROR, 2);1907 /** @todo Context ID not used yet. */1908 Msg.u.v3.uContext.SetUInt32(0);1909 Msg.u.v3.rc.SetUInt32((uint32_t)rcErr); /* uint32_t vs. int. */1910 1911 int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));1912 1913 /*1914 * Never return an error if the host did not accept the error at the current1915 * time. This can be due to the host not having any appropriate callbacks1916 * set which would handle that error.1917 *1918 * bird: Looks like VERR_NOT_SUPPORTED is what the host will return if it1919 * doesn't an appropriate callback. The code used to ignore ALL errors1920 * the host would return, also relevant ones.1921 */1922 if (RT_FAILURE(rc))1923 LogFlowFunc(("Sending error %Rrc failed with rc=%Rrc\n", rcErr, rc));1924 if (rc == VERR_NOT_SUPPORTED)1925 rc = VINF_SUCCESS;1926 1927 return rc;1928 }1929 1929 #endif /* VBOX_WITH_DRAG_AND_DROP_GH */ 1930 1930 -
TabularUnified trunk/src/VBox/Additions/x11/VBoxClient/draganddrop.cpp ¶
r97740 r97748 2566 2566 if (RT_FAILURE(rc)) 2567 2567 { 2568 int rc2 = VbglR3DnD GHSendError(&m_dndCtx, rc);2568 int rc2 = VbglR3DnDSendError(&m_dndCtx, rc); 2569 2569 LogFlowThisFunc(("Sending error %Rrc to host resulted in %Rrc\n", rc, rc2)); RT_NOREF(rc2); 2570 2570 /* This is not fatal for us, just ignore. */ -
TabularUnified trunk/src/VBox/GuestHost/DragAndDrop/DnDUtils.cpp ¶
r97730 r97748 81 81 RT_CASE_RET_STR(GUEST_DND_FN_QUERY_FEATURES); 82 82 RT_CASE_RET_STR(GUEST_DND_FN_GET_NEXT_HOST_MSG); 83 RT_CASE_RET_STR(GUEST_DND_FN_EVT_ERROR); 83 84 RT_CASE_RET_STR(GUEST_DND_FN_HG_ACK_OP); 84 85 RT_CASE_RET_STR(GUEST_DND_FN_HG_REQ_DATA); … … 87 88 RT_CASE_RET_STR(GUEST_DND_FN_GH_SND_DATA_HDR); 88 89 RT_CASE_RET_STR(GUEST_DND_FN_GH_SND_DATA); 89 RT_CASE_RET_STR(GUEST_DND_FN_GH_EVT_ERROR);90 90 RT_CASE_RET_STR(GUEST_DND_FN_GH_SND_DIR); 91 91 RT_CASE_RET_STR(GUEST_DND_FN_GH_SND_FILE_DATA); -
TabularUnified trunk/src/VBox/HostServices/DragAndDrop/VBoxDragAndDropSvc.cpp ¶
r97731 r97748 464 464 } 465 465 466 /* New since VBOx 7.0.x. See define for details. */ 467 case GUEST_DND_FN_EVT_ERROR: 468 { 469 rc = VINF_SUCCESS; 470 break; 471 } 472 466 473 case GUEST_DND_FN_HG_ACK_OP: 467 474 case GUEST_DND_FN_HG_REQ_DATA: … … 482 489 case GUEST_DND_FN_GH_SND_FILE_HDR: 483 490 case GUEST_DND_FN_GH_SND_FILE_DATA: 484 case GUEST_DND_FN_GH_EVT_ERROR:485 491 { 486 492 #ifdef VBOX_WITH_DRAG_AND_DROP_GH … … 959 965 break; 960 966 } 961 case GUEST_DND_FN_ GH_EVT_ERROR:967 case GUEST_DND_FN_EVT_ERROR: 962 968 { 963 969 ASSERT_GUEST_BREAK(cParms >= 1); … … 965 971 VBOXDNDCBEVTERRORDATA data; 966 972 RT_ZERO(data); 967 data.hdr.uMagic = CB_MAGIC_DND_ GH_EVT_ERROR;973 data.hdr.uMagic = CB_MAGIC_DND_EVT_ERROR; 968 974 969 975 GET_CONTEXT_ID_PARM0();
Note:
See TracChangeset
for help on using the changeset viewer.