darwin.cpp revision 11d3f08e54e3b11180ae7be0b8efaf851f1d37c1
/* $Id$ */
/** @file
* Shared Clipboard: Mac OS X host.
*/
/*
* Copyright (C) 2008 innotek GmbH
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#include "VBoxClipboard.h"
/* We do the work in a separate cpp file because
* of the conflicting typedef "OSType". This is
#include "darwin-pasteboard.h"
/** Global clipboard context information */
struct _VBOXCLIPBOARDCONTEXT
{
/** We have a separate thread to poll for new clipboard content */
bool volatile fTerminate;
/** The reference to the current pasteboard */
};
/** Only one client is supported. There seems to be no need for more clients. */
static VBOXCLIPBOARDCONTEXT g_ctx;
{
return VINF_SUCCESS;
/* Retrieve the formats currently in the clipboard and supported by vbox */
if (fFormats > 0)
{
}
return rc;
}
{
Log (("vboxClipboardThread: starting clipboard thread\n"));
while (!pCtx->fTerminate)
{
/* Sleep for 200 msecs before next poll */
RTThreadSleep (200);
}
Log (("vboxClipboardThread: clipboard thread terminated successfully with return code %Vrc\n", VINF_SUCCESS));
return VINF_SUCCESS;
}
/*
* Public platform dependent functions.
*/
/** Initialise the host side of the shared clipboard - called by the hgcm layer. */
int vboxClipboardInit (void)
{
Log (("vboxClipboardInit\n"));
int rc = VINF_SUCCESS;
g_ctx.fTerminate = false;
return rc;
}
/** Terminate the host side of the shared clipboard - called by the hgcm layer. */
void vboxClipboardDestroy (void)
{
Log (("vboxClipboardDestroy\n"));
g_ctx.fTerminate = true;
/* Wait for the clipboard thread to terminate. */
}
/**
* Enable the shared clipboard - called by the hgcm clipboard subsystem.
*
* @param pClient Structure containing context information about the guest system
* @returns RT status code
*/
{
{
/* One client only. */
return VERR_NOT_SUPPORTED;
}
/* Initially sync the host clipboard content with the client. */
return rc;
}
/**
* Synchronise the contents of the host clipboard with the guest, called by the HGCM layer
* after a save and restore of the guest.
*/
{
/* Sync the host clipboard content with the client. */
return rc;
}
/**
* Shut down the shared clipboard subsystem and "disconnect" the guest.
*/
{
Log (("vboxClipboardDisconnect\n"));
}
/**
* The guest is taking possession of the shared clipboard. Called by the HGCM clipboard
* subsystem.
*
* @param pClient Context data for the guest system
* @param u32Formats Clipboard formats the the guest is offering
*/
{
if (u32Formats == 0)
{
/* This is just an automatism, not a genuine anouncement */
return;
}
}
/**
* Called by the HGCM clipboard subsystem when the guest wants to read the host clipboard.
*
* @param pClient Context information about the guest VM
* @param u32Format The format that the guest would like to receive the data in
* @param pv Where to write the data to
* @param cb The size of the buffer to write the data to
* @param pcbActual Where to write the actual size of the written data
*/
{
/* Default to no data available. */
*pcbActual = 0;
return rc;
}
/**
* Called by the HGCM clipboard subsystem when we have requested data and that data arrives.
*
* @param pClient Context information about the guest VM
* @param pv Buffer to which the data was written
* @param cb The size of the data written
* @param u32Format The format of the data written
*/
{
}