VirtualBox

Changeset 18586 in vbox


Ignore:
Timestamp:
Mar 31, 2009 9:10:20 PM (15 years ago)
Author:
vboxsync
Message:

HostServices/SharedClipboard/X11: added opaque data pointers to the X11 backend APIs, as yet unused

Location:
trunk
Files:
3 edited

Legend:

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

    r18585 r18586  
    3131};
    3232
     33/** Opaque data structure for the X11/VBox frontend/glue code. */
    3334struct _VBOXCLIPBOARDCONTEXT;
    3435typedef struct _VBOXCLIPBOARDCONTEXT VBOXCLIPBOARDCONTEXT;
     36
     37/** Opaque data structure for the X11/VBox backend code. */
     38struct _VBOXCLIPBOARDCONTEXTX11;
     39typedef struct _VBOXCLIPBOARDCONTEXTX11 VBOXCLIPBOARDCONTEXTX11;
    3540
    3641/** Does X11 or VBox currently own the clipboard? */
     
    5560
    5661/* APIs exported by the X11 backend */
    57 extern void VBoxX11ClipboardAnnounceVBoxFormat (uint32_t u32Formats);
    58 extern int VBoxX11ClipboardInitX11 (VBOXCLIPBOARDCONTEXT *pFrontend);
    59 extern int VBoxX11ClipboardTermX11 (void);
    60 extern int VBoxX11ClipboardStartX11 (enum g_eOwner owner);
    61 extern void VBoxX11ClipboardRequestSyncX11 (void);
    62 extern void VBoxX11ClipboardStopX11 (void);
    63 extern void VBoxX11ClipboardAnnounceVBoxFormat (uint32_t u32Formats);
    64 extern int VBoxX11ClipboardReadX11Data (uint32_t u32Format,
    65                                         VBOXCLIPBOARDREQUEST *pRequest);
     62extern void VBoxX11ClipboardAnnounceVBoxFormat(uint32_t u32Formats);
     63extern int VBoxX11ClipboardInitX11(VBOXCLIPBOARDCONTEXT *pFrontend,
     64                                   VBOXCLIPBOARDCONTEXTX11 **ppBackend);
     65extern int VBoxX11ClipboardTermX11(VBOXCLIPBOARDCONTEXTX11 *pBackend);
     66extern int VBoxX11ClipboardStartX11(VBOXCLIPBOARDCONTEXTX11 *pBackend,
     67                                    enum g_eOwner owner);
     68extern void VBoxX11ClipboardRequestSyncX11(VBOXCLIPBOARDCONTEXTX11 *pBackend);
     69extern void VBoxX11ClipboardStopX11(VBOXCLIPBOARDCONTEXTX11 *pBackend);
     70extern void VBoxX11ClipboardAnnounceVBoxFormat(VBOXCLIPBOARDCONTEXTX11
     71                                               *pBackend, uint32_t u32Formats);
     72extern int VBoxX11ClipboardReadX11Data(VBOXCLIPBOARDCONTEXTX11 *pBackend,
     73                                       uint32_t u32Format,
     74                                       VBOXCLIPBOARDREQUEST *pRequest);
    6675
    6776/* APIs exported by the X11/VBox frontend */
    68 extern int VBoxX11ClipboardReadVBoxData (VBOXCLIPBOARDCONTEXT *pCtx,
    69                                          uint32_t u32Format, void **ppv,
    70                                          uint32_t *pcb);
     77extern int VBoxX11ClipboardReadVBoxData(VBOXCLIPBOARDCONTEXT *pCtx,
     78                                        uint32_t u32Format, void **ppv,
     79                                        uint32_t *pcb);
    7180extern void VBoxX11ClipboardReportX11Formats(VBOXCLIPBOARDCONTEXT *pCtx,
    7281                                             uint32_t u32Formats);
  • trunk/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp

    r18585 r18586  
    134134    RTSEMEVENT waitForData;
    135135};
    136 
    137 typedef struct _VBOXCLIPBOARDCONTEXTX11 VBOXCLIPBOARDCONTEXTX11;
    138136
    139137/* Only one client is supported. There seems to be no need for more clients.
     
    676674 * @note  X11 backend code
    677675 */
    678 int VBoxX11ClipboardInitX11 (VBOXCLIPBOARDCONTEXT *pFrontend)
     676int VBoxX11ClipboardInitX11(VBOXCLIPBOARDCONTEXT *pFrontend,
     677                            VBOXCLIPBOARDCONTEXTX11 **ppBackend)
    679678{
    680679    int rc;
     
    735734 * @note  X11 backend code
    736735 */
    737 int VBoxX11ClipboardTermX11 (void)
     736int VBoxX11ClipboardTermX11(VBOXCLIPBOARDCONTEXTX11 *pBackend)
    738737{
    739738    int rc, rcThread;
     
    783782 * @param  owner who is the initial clipboard owner
    784783 */
    785 int VBoxX11ClipboardStartX11 (enum g_eOwner owner)
     784int VBoxX11ClipboardStartX11(VBOXCLIPBOARDCONTEXTX11 *pBackend,
     785                             enum g_eOwner owner)
    786786{
    787787    LogFlowFunc(("\n"));
     
    799799        /** @todo Check whether the guest gets a format announcement at
    800800          *       startup. */
    801         VBoxX11ClipboardAnnounceVBoxFormat(0);
     801        VBoxX11ClipboardAnnounceVBoxFormat(pBackend, 0);
    802802    }
    803803    return VINF_SUCCESS;
     
    808808 * @note  X11 backend code
    809809 */
    810 void VBoxX11ClipboardRequestSyncX11 (void)
     810void VBoxX11ClipboardRequestSyncX11(VBOXCLIPBOARDCONTEXTX11 *pBackend)
    811811{
    812812    /*
     
    822822 * @note  X11 backend code
    823823 */
    824 void VBoxX11ClipboardStopX11 (void)
     824void VBoxX11ClipboardStopX11(VBOXCLIPBOARDCONTEXTX11 *pBackend)
    825825{
    826826    /*
     
    13031303 * @note  X11 backend code
    13041304 */
    1305 void VBoxX11ClipboardAnnounceVBoxFormat (uint32_t u32Formats)
     1305void VBoxX11ClipboardAnnounceVBoxFormat(VBOXCLIPBOARDCONTEXTX11 *pBackend,
     1306                                        uint32_t u32Formats)
    13061307{
    13071308    /*
     
    13561357 * @note   X11 backend code
    13571358 */
    1358 int VBoxX11ClipboardReadX11Data (uint32_t u32Format,
    1359                                   VBOXCLIPBOARDREQUEST *pRequest)
     1359int VBoxX11ClipboardReadX11Data(VBOXCLIPBOARDCONTEXTX11 *pBackend,
     1360                                uint32_t u32Format,
     1361                                VBOXCLIPBOARDREQUEST *pRequest)
    13601362{
    13611363    /*
  • trunk/src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp

    r18585 r18586  
    5454    RTSEMMUTEX clipboardMutex;
    5555
     56    /** Pointer to the opaque X11 backend structure */
     57    VBOXCLIPBOARDCONTEXTX11 *pBackend;
    5658    /** Pointer to the client data structure */
    5759    VBOXCLIPBOARDCLIENTDATA *pClient;
     
    8587         * data from X11. */
    8688        LogFunc(("host requested guest clipboard data after guest had disconnected.\n"));
    87         VBoxX11ClipboardAnnounceVBoxFormat(0);
     89        VBoxX11ClipboardAnnounceVBoxFormat(pCtx->pBackend, 0);
    8890        pCtx->waiter = NONE;
    8991        return VERR_TIMEOUT;
     
    162164{
    163165    int rc = VINF_SUCCESS;
     166    VBOXCLIPBOARDCONTEXTX11 *pBackend = NULL;
     167
    164168    LogRel(("Initializing host clipboard service\n"));
    165169    RTSemEventCreate(&g_ctxHost.waitForData);
    166170    RTSemMutexCreate(&g_ctxHost.clipboardMutex);
    167     rc = VBoxX11ClipboardInitX11(&g_ctxHost);
     171    rc = VBoxX11ClipboardInitX11(&g_ctxHost, &pBackend);
    168172    if (RT_FAILURE(rc))
    169173    {
     
    172176        LogRel(("Failed to start the host shared clipboard service.\n"));
    173177    }
     178    else
     179        g_ctxHost.pBackend = pBackend;
    174180    return rc;
    175181}
     
    197203     *         even if we are not waiting. */
    198204    RTSemEventSignal(g_ctxHost.waitForData);
    199     rc = VBoxX11ClipboardTermX11();
     205    rc = VBoxX11ClipboardTermX11(g_ctxHost.pBackend);
    200206    if (RT_SUCCESS(rc))
    201207    {
     
    225231    /** The pClient pointer is a dummy anyway, as we only support a single
    226232     * client at a time. */
    227     rc = VBoxX11ClipboardStartX11(X11 /* initial owner */);
     233    rc = VBoxX11ClipboardStartX11(g_ctxHost.pBackend,
     234                                  X11 /* initial owner */);
    228235    return rc;
    229236}
     
    246253    vboxSvcClipboardReportMsg (g_ctxHost.pClient,
    247254                               VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS, 0);
    248     VBoxX11ClipboardRequestSyncX11();
     255    VBoxX11ClipboardRequestSyncX11(g_ctxHost.pBackend);
    249256
    250257    return VINF_SUCCESS;
     
    261268    RTSemMutexRequest(g_ctxHost.clipboardMutex, RT_INDEFINITE_WAIT);
    262269    g_ctxHost.pClient = NULL;
    263     VBoxX11ClipboardStopX11();
     270    VBoxX11ClipboardStopX11(g_ctxHost.pBackend);
    264271    RTSemMutexRelease(g_ctxHost.clipboardMutex);
    265272}
     
    274281void vboxClipboardFormatAnnounce (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Formats)
    275282{
    276     VBoxX11ClipboardAnnounceVBoxFormat (u32Formats);
     283    VBoxX11ClipboardAnnounceVBoxFormat (g_ctxHost.pBackend, u32Formats);
    277284}
    278285
     
    302309    request.cb = cb;
    303310    request.pcbActual = pcbActual;
    304     rc = VBoxX11ClipboardReadX11Data(u32Format, &request);
     311    rc = VBoxX11ClipboardReadX11Data(g_ctxHost.pBackend, u32Format, &request);
    305312    g_ctxHost.waiter = NONE;
    306313    return rc;
     
    316323 * @note   Host glue code
    317324 */
    318 void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient, void *pv, uint32_t cb, uint32_t u32Format)
     325void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient,
     326                             void *pv, uint32_t cb, uint32_t u32Format)
    319327{
    320328/* Assume that if this gets called at all then the X11 backend is running. */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette