VirtualBox

Changeset 86710 in vbox


Ignore:
Timestamp:
Oct 26, 2020 2:35:44 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
141094
Message:

Shared Clipboard/X11: Guarded the Xt busy / update handling via VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY (enabled by default for now). bugref:9848

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/SharedClipboard-x11.h

    r85833 r86710  
    3535
    3636#include <VBox/GuestHost/SharedClipboard.h>
     37
     38/** Enables the Xt busy / update handling. */
     39#define VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY      1
    3740
    3841/**
     
    117120    /** The first XFixes event number. */
    118121    int fixesEventBase;
     122#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    119123    /** XtGetSelectionValue on some versions of libXt isn't re-entrant
    120124     * so block overlapping requests on this flag. */
     
    124128     * before processing the callback event. */
    125129    bool fXtNeedsUpdate;
     130#endif
    126131} SHCLX11CTX, *PSHCLX11CTX;
    127132
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp

    r86702 r86710  
    663663    LogFlowFuncEnter();
    664664
     665#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    665666    pCtx->fXtBusy = false;
    666667    if (pCtx->fXtNeedsUpdate)
     
    671672        return;
    672673    }
     674#endif
    673675
    674676    if (paIdxFmtTargets == NULL)
     
    769771{
    770772#ifndef TESTCASE
     773
     774# ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    771775    LogFlowFunc(("fXtBusy=%RTbool\n", pCtx->fXtBusy));
    772 
    773776    if (pCtx->fXtBusy)
    774777    {
     
    778781
    779782    pCtx->fXtBusy = true;
     783# endif
     784
    780785    XtGetSelectionValue(pCtx->pWidget,
    781786                        clipGetAtom(pCtx, "CLIPBOARD"),
     
    11101115    pCtx->pFrontend      = pParent;
    11111116
     1117#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    11121118    pCtx->fXtBusy        = false;
    11131119    pCtx->fXtNeedsUpdate = false;
     1120#endif
    11141121
    11151122    LogFlowFuncLeaveRC(VINF_SUCCESS);
     
    17821789    size_t cbDst = 0;
    17831790
     1791#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    17841792    PSHCLX11CTX pCtx = pReq->pCtx;
    17851793    AssertPtr(pReq->pCtx);
     
    17881796    if (pCtx->fXtNeedsUpdate)
    17891797        clipQueryX11Formats(pCtx);
     1798#endif
    17901799
    17911800    if (pvSrc == NULL)
     
    20402049    int rc = VERR_NO_DATA; /* VBox thinks we have data and we don't. */
    20412050
     2051#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    20422052    const bool fXtBusy = pCtx->fXtBusy;
    20432053    pCtx->fXtBusy = true;
     
    20472057        rc = VERR_TRY_AGAIN;
    20482058    }
    2049     else if (pReq->uFmtVBox & VBOX_SHCL_FMT_UNICODETEXT)
     2059    else
     2060#endif
     2061    if (pReq->uFmtVBox & VBOX_SHCL_FMT_UNICODETEXT)
    20502062    {
    20512063        pReq->idxFmtX11 = pCtx->idxFmtText;
     
    20872099    else
    20882100    {
     2101#ifdef VBOX_WITH_SHARED_CLIPBOARD_XT_BUSY
    20892102        pCtx->fXtBusy = false;
    2090 
     2103#endif
    20912104        rc = VERR_NOT_IMPLEMENTED;
    20922105    }
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