VirtualBox

Ignore:
Timestamp:
May 20, 2009 9:18:53 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47568
Message:

HostServices and GuestHost/SharedClipboard: hopefully fixed the broken saved state and improved on my changes to the platform-neutral code for asynchronous handling of guest data requests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp

    r19842 r19875  
    13531353     * a request for the clipboard contents) */
    13541354    unsigned mSize;
    1355     /** The opaque context structure for completing the request */
    1356     CLIPREADX11CBCONTEXT *mReadCtx;
    13571355    /** The format VBox would like the data in */
    13581356    uint32_t mFormat;
     
    14251423        rc = VERR_NOT_IMPLEMENTED;
    14261424    XtFree((char *)pvSrc);
    1427     ClipCompleteDataRequestFromX11(pReq->mReadCtx, rc, cbActual);
     1425    ClipCompleteDataRequestFromX11(pReq->mCtx->pFrontend, rc, cbActual);
    14281426    RTMemFree(pReq);
    14291427    if (RT_SUCCESS(rc))
     
    14791477        /* The clipboard callback was never scheduled, so we must signal
    14801478         * that the request processing is finished and clean up ourselves. */
    1481         ClipCompleteDataRequestFromX11(pReq->mReadCtx, rc, 0);
     1479        ClipCompleteDataRequestFromX11(pReq->mCtx->pFrontend, rc, 0);
    14821480        RTMemFree(pReq);
    14831481    }
     
    14981496 */
    14991497int ClipRequestDataFromX11(CLIPBACKEND *pCtx, uint32_t u32Format, void *pv,
    1500                            uint32_t cb, CLIPREADX11CBCONTEXT *pReadCtx)
     1498                           uint32_t cb)
    15011499{
    15021500    /*
     
    15131511        pReq->mBuffer = pv;
    15141512        pReq->mSize = cb;
    1515         pReq->mReadCtx = pReadCtx;
    15161513        pReq->mFormat = u32Format;
    15171514        pReq->mCtx = pCtx;
     
    19531950}
    19541951
    1955 struct _CLIPREADX11CBCONTEXT
    1956 {
    1957     int rc;
    1958     uint32_t cbActual;
    1959 };
    1960 
    1961 void ClipCompleteDataRequestFromX11(CLIPREADX11CBCONTEXT *pCtx, int rc,
     1952static int g_completedRC = VINF_SUCCESS;
     1953static int g_completedActual = 0;
     1954
     1955void ClipCompleteDataRequestFromX11(VBOXCLIPBOARDCONTEXT *pCtx, int rc,
    19621956                                    uint32_t cbActual)
    19631957{
    1964     pCtx->rc = rc;
    1965     pCtx->cbActual = cbActual;
     1958    g_completedRC = rc;
     1959    g_completedActual = cbActual;
     1960}
     1961
     1962static void clipGetCompletedRequest(int *prc, uint32_t *pcbActual)
     1963{
     1964    *prc = g_completedRC;
     1965    *pcbActual = g_completedActual;
    19661966}
    19671967
     
    19841984    {
    19851985        char pc[MAX_BUF_SIZE];
    1986         CLIPREADX11CBCONTEXT readCtx;
     1986        ClipRequestDataFromX11(pCtx, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
     1987                               (void *) pc, cbBuf);
     1988        int rc = VINF_SUCCESS;
    19871989        uint32_t cbActual = 0;
    1988         ClipRequestDataFromX11(pCtx, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
    1989                                (void *) pc, cbBuf, &readCtx);
    1990         int rc = readCtx.rc;
    1991         cbActual = readCtx.cbActual;
     1990        clipGetCompletedRequest(&rc, &cbActual);
    19921991        if (rc != rcExp)
    19931992            RTPrintf("Wrong return code, expected %Rrc, got %Rrc\n", rcExp,
     
    20422041    {
    20432042        char pc[MAX_BUF_SIZE];
    2044         CLIPREADX11CBCONTEXT readCtx;
     2043        ClipRequestDataFromX11(pCtx, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
     2044                               (void *) pc, cbBuf);
     2045        int rc = VINF_SUCCESS;
    20452046        uint32_t cbActual = 0;
    2046         ClipRequestDataFromX11(pCtx, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
    2047                                (void *) pc, cbBuf, &readCtx);
    2048         int rc = readCtx.rc;
    2049         cbActual = readCtx.cbActual;
     2047        clipGetCompletedRequest(&rc, &cbActual);
    20502048        if (rc != rcExp)
    20512049            RTPrintf("Wrong return code, expected %Rrc, got %Rrc\n", rcExp,
     
    22722270    clipSetSelectionValues("UTF8_STRING", XA_STRING, NULL,
    22732271                           0, 8);
    2274     CLIPREADX11CBCONTEXT readCtx;
    22752272    ClipRequestDataFromX11(pCtx, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
    2276                            (void *) pc, sizeof(pc), &readCtx);
    2277     rc = readCtx.rc;
    2278     cbActual = readCtx.cbActual;
     2273                           (void *) pc, sizeof(pc));
     2274    clipGetCompletedRequest(&rc, &cbActual);
    22792275    if (rc != VERR_NO_DATA)
    22802276    {
     
    22852281    /*** request for an invalid VBox format from X11 ***/
    22862282    RTPrintf(TEST_NAME ": TESTING a request for an invalid VBox format from X11\n");
    2287     ClipRequestDataFromX11(pCtx, 0xffff, (void *) pc, sizeof(pc), &readCtx);
    2288     rc = readCtx.rc;
    2289     cbActual = readCtx.cbActual;
     2283    ClipRequestDataFromX11(pCtx, 0xffff, (void *) pc, sizeof(pc));
     2284    clipGetCompletedRequest(&rc, &cbActual);
    22902285    if (rc != VERR_NOT_IMPLEMENTED)
    22912286    {
     
    24422437{}
    24432438
    2444 void ClipCompleteDataRequestFromX11(CLIPREADX11CBCONTEXT *pCtx, int rc,
     2439void ClipCompleteDataRequestFromX11(VBOXCLIPBOARDCONTEXT *pCtx, int rc,
    24452440                                    uint32_t cbActual)
    24462441{}
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