seamless.h revision a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fc
/** @file
*
* Guest client: seamless mode.
*/
/*
* Copyright (C) 2006-2007 innotek GmbH
*
* innotek GmbH confidential
* All rights reserved
*/
#ifndef __Additions_xclient_seamless_h
# define __Additions_xclient_seamless_h
#include "seamless-host.h"
#include "seamless-guest.h"
#include "seamless-glue.h"
/** Thread function class for VBoxGuestSeamlessX11. */
{
/** The guest class "owning" us. */
/** Should we exit the thread? */
bool mExit;
// Copying or assigning a thread object is not sensible
virtual ~VBoxGuestSeamlessGuestThread(void) {}
/**
* The actual thread function.
*
* @returns iprt status code as thread return value
* @param pParent the VBoxGuestThread running this thread function
*/
{
while (!pThread->isStopping)
{
}
return VINF_SUCCESS;
}
/**
* Send a signal to the thread function that it should exit
*/
};
/** Observer for the host class - start and stop seamless reporting in the guest when the
host requests. */
{
{
}
void notify(void)
{
{
case VBoxGuestSeamlessGuest::ENABLE:
break;
case VBoxGuestSeamlessGuest::DISABLE:
break;
default:
break;
}
}
};
/** Observer for the guest class - send the host updated seamless rectangle information when
it becomes available. */
{
{
}
void notify(void)
{
}
};
{
bool isInitialised;
int init(void)
{
int rc = VINF_SUCCESS;
if (isInitialised) /* Assertion */
{
LogRelFunc(("error: called a second time!\n"));
}
if (RT_SUCCESS(rc))
{
}
if (RT_SUCCESS(rc))
{
}
if (RT_SUCCESS(rc))
{
}
if (RT_SUCCESS(rc))
{
}
isInitialised = true;
return rc;
}
void uninit(void)
{
if (isInitialised)
{
mGuestThread.stop();
isInitialised = false;
}
}
{
isInitialised = false;
}
~VBoxGuestSeamless() { uninit(); }
};
#endif /* __Additions_xclient_seamless_h not defined */