VirtualBox

Changeset 82216 in vbox for trunk/src


Ignore:
Timestamp:
Nov 26, 2019 9:28:21 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135030
Message:

Shared Clipboard/VBoxClient: Re-added code removed in r134460, as this still is needed for various software products. Thank you, Andrew Caldwell!

File:
1 edited

Legend:

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

    r82157 r82216  
    640640    PSHCLX11CTX pCtx = reinterpret_cast<SHCLX11CTX *>(pClient);
    641641
     642    LogFlowFunc(("fXtNeedsUpdate=%RTbool, fXtBusy=%RTbool\n", pCtx->fXtNeedsUpdate, pCtx->fXtBusy));
     643
     644    if (pCtx->fXtNeedsUpdate)
     645    {
     646        // The data from this callback is already out of date.  Refresh it.
     647        pCtx->fXtNeedsUpdate = false;
     648        XtGetSelectionValue(pCtx->widget,
     649                            clipGetAtom(pCtx, "CLIPBOARD"),
     650                            clipGetAtom(pCtx, "TARGETS"),
     651                            clipConvertX11TargetsCallback, pCtx,
     652                            CurrentTime);
     653        return;
     654    }
     655    else
     656    {
     657        pCtx->fXtBusy = false;
     658    }
     659
    642660    Atom *pAtoms = (Atom *)pValue;
    643661    unsigned i, j;
     
    711729
    712730#ifndef TESTCASE
    713     XtGetSelectionValue(pCtx->widget,
    714                         clipGetAtom(pCtx, "CLIPBOARD"),
    715                         clipGetAtom(pCtx, "TARGETS"),
    716                         clipConvertX11TargetsCallback, pCtx,
    717                         CurrentTime);
     731    LogFlowFunc(("fXtBusy=%RTbool\n", pCtx->fXtBusy));
     732
     733    if (pCtx->fXtBusy)
     734    {
     735        pCtx->fXtNeedsUpdate = true;
     736    }
     737    else
     738    {
     739        pCtx->fXtBusy = true;
     740        XtGetSelectionValue(pCtx->widget,
     741                            clipGetAtom(pCtx, "CLIPBOARD"),
     742                            clipGetAtom(pCtx, "TARGETS"),
     743                            clipConvertX11TargetsCallback, pCtx,
     744                            CurrentTime);
     745    }
    718746#else
    719747    tstRequestTargets(pCtx);
     
    10251053    }
    10261054
    1027     pCtx->fHaveX11  = !fHeadless;
    1028     pCtx->pFrontend = pParent;
     1055    pCtx->fHaveX11       = !fHeadless;
     1056    pCtx->pFrontend      = pParent;
     1057
     1058    pCtx->fXtBusy        = false;
     1059    pCtx->fXtNeedsUpdate = false;
    10291060
    10301061    LogFlowFuncLeaveRC(VINF_SUCCESS);
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