diff -r 8f2c3e21aac9 -r 4d1fe4a7ce83 graphics_plat/guestvideodriver_api/inc/guestvideodriver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphics_plat/guestvideodriver_api/inc/guestvideodriver.h Fri Aug 13 15:11:40 2010 +0100 @@ -0,0 +1,96 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Header file for guest video driver + +#ifndef __GUESTVIDEODRIVER_H__ +#define __GUESTVIDEODRIVER_H__ + +#include +#include +#include + +#include "guestvideodrivercommon.h" + +class RemoteFunctionCallData; + +//Local request buffering size +const TInt KRequestBufferSize = 20000; + +/** + * Guest video driver user API. One instance exists per process. + */ +NONSHARABLE_CLASS(RGuestVideoDriver) : public RBusLogicalChannel + { +public: + // Default constructor + IMPORT_C RGuestVideoDriver(); + + // Destructor + IMPORT_C ~RGuestVideoDriver(); + + /** + * Opens this driver handle. Calls RBusLogicalChannel::DoCreate. + * + * @return System wide error code + */ + IMPORT_C TInt Open(); + + /** + * Executes a command + * @param aRequestData Remote function call + */ + IMPORT_C void ExecuteCommand(RemoteFunctionCallData& aRequestData); + + /** + * Flushes any buffered commands. + */ + IMPORT_C void Flush(); + + IMPORT_C TInt MapToHWAddress( const TInt aChunkHandle, TUint32& aHWAddress ); + + IMPORT_C TInt EglGetSgHandles( const TUint64 aId, TUint64 *aSgHandles ); + + /** + * Gets Base Address of Frame Buffer + * @param aHWAddress returned Base Address + * + * @note A base address of 0 is invalid, and indicates a failure to + * obtain the base address. + */ + IMPORT_C TInt GetFrameBufferBaseAddress( TUint32& aHWAddress ); + + +private: + /* + Buffer, or send if it needs a reply, a command to the virtual video hardware + @param aRFC Remote function call to buffer + @return ETrue if buffering succeeds, otherwise the aRFC needs to be executed directly + */ + TBool BufferCommand( RemoteFunctionCallData& aRFC ); + + // Sends buffered commands + void SendBuffer(); + +private: + TBool iIsOpen; + RMutex iThreadLock; + /** + * Request buffer + */ + TUint32 iProcessId; + TBuf8 iBuffer; + }; + + +#endif // __GUESTVIDEODRIVER_H__