MCompositionSurfaceUpdate Class Reference

class MCompositionSurfaceUpdate
Public Member Functions
TInt ApiVersion(void)
voidContentUpdated(const TSurfaceId &, TInt, const TRegion *, TRequestStatus *, TRequestStatus *, TUint32 *, TRequestStatus *, TInt *)
TAny *GetInterface(TUint)
MClass *GetInterface()
TVersion InternalVersion(void)
Protected Member Functions
TInt Extension_(TUint, TAny *&, TAny *)
Public Member Enumerations
enumanonymous { KUidCompositionSurfaceUpdate = 0x10286498, ETypeId = KUidCompositionSurfaceUpdate }

Member Functions Documentation

ApiVersion(void)

TInt ApiVersion(void)[pure virtual]

Parameters

void

ContentUpdated(const TSurfaceId &, TInt, const TRegion *, TRequestStatus *, TRequestStatus *, TUint32 *, TRequestStatus *, TInt *)

voidContentUpdated(const TSurfaceId &aSurface,
TIntaBuffer,
const TRegion *aRegion,
TRequestStatus *aStatusConsumed,
TRequestStatus *aStatusDisplayed,
TUint32 *aTimeStamp,
TRequestStatus *aStatusDispXTimes,
TInt *aDisplayedXTimes
)[pure virtual]

When the contents of a surface change, this function gets called by a mechanism that is an implementation detail of the graphics driver together with the Native Stream and Compositor implementations. The call can originate from different processes and the Native Stream together with the Compositor implementation relays the information content of it, through implementation specific means, to trigger the actual composition soon after this call - this composition call should be synchronized with the refresh rate of the screen.

Pre-condition
The MCompositionSurfaceUpdate implementation is waiting for content update notifications.
aSurface.IsNull() returns EFalse.
The surface aSurface is registered with the receiver or all status requests are completed with KErrArgument.
Either both aStatusDisplayed and aTimeStamp are NULL or neither of them are.
Either both aStatusDispXTimes and aDisplayedXTimes are NULL or neither of them are.
Post-condition
The MCompositionSurfaceUpdate implementation is waiting for vsync or another synchronisation method to trigger composition, depending on cached visibility information.
Note:

The updated region is used only as an optimisation hint. the current contents of the surface are always used for composition independent of the aRegion.

Surface Update API Specification for further details about the semantics of the parameters and return values of the TRequestStatus objects.

Parameters

const TSurfaceId & aSurfaceThe surface that has been updated.
TInt aBufferThe buffer of the surface to be used in composition. Integer starting from 0.
const TRegion * aRegionThe sub-area that has the updates. If NULL, the whole surface is considered changed.
TRequestStatus * aStatusConsumedA request status object or NULL. If not NULL, then the request status is completed once the receiver does not anymore need the contents of the surface to render the update. This may happen before actually displaying the finished frame.
TRequestStatus * aStatusDisplayedThis is signaled after the composited frame is posted the to display for the first time after the update. After this the value in aTimeStamp is valid, if the value in the status object is KErrNone. Can be NULL, if no signal is desired.
TUint32 * aTimeStampValue of the User::FastCounter() right after the display refresh that signaled aStatusDisplayed.
TRequestStatus * aStatusDispXTimesThis is signaled when the surface has been on the screen for aDisplayedXTimes refreshes, including the update that signaled aStatusDisplayed. Can be NULL, if no signal is wanted.
TInt * aDisplayedXTimesThe number of refreshes after which aStatusDispXTimes is signaled or NULL. If values is provided, it must be >= 1.

Extension_(TUint, TAny *&, TAny *)

TInt Extension_(TUintaExtensionId,
TAny *&a0,
TAny *a1
)[protected, pure virtual]

Parameters

TUint aExtensionId
TAny *& a0
TAny * a1

GetInterface(TUint)

TAny *GetInterface(TUintaExtensionId)[inline]

Get Extension Interface. Implemented using the CBase::Extension_() mechanism Note that the pointer returned is only good for the lifetime of the called CBase derived object.

Parameters

TUint aExtensionIdThe GUID/ Well-known ID of the interface

GetInterface()

MClass *GetInterface()[inline]

Get Extension Interface - templated helper. Resolves the ID and returned pointer based on the class name. Note that the pointer returned is only good for the lifetime of the called CBase derived object. Class name should support ETypeId intergral value, else use non-template version.

InternalVersion(void)

TVersion InternalVersion(void)[pure virtual]

Parameters

void

Member Enumerations Documentation

Enum anonymous

Enumerators

KUidCompositionSurfaceUpdate = 0x10286498
ETypeId = KUidCompositionSurfaceUpdate