7 #include "sdlepocapi.h"
11 typedef void (*TCopyFunction
)(const CDsa
& aDsa
, TUint32
* aTarget
, const TUint8
* aSource
, TInt aBytes
);
13 class CDsa
: public CBase
18 ELastDsaRequest
= EpocSdlEnv::ELastService
,
21 inline TBool
IsDsaAvailable() const;
23 static CDsa
* CreateL(RWsSession
& aSession
);
27 TUint8
* LockHwSurface();
28 TInt
AllocSurface(const TSize
& aSize
, TDisplayMode aMode
);
29 inline TDisplayMode
DisplayMode() const;
31 TInt
SetPalette(TInt aFirst
, TInt aCount
, TUint32
* aPalette
);
32 TBool
AddUpdateRect(const TUint8
* aBits
, const TRect
& aUpdateRect
, const TRect
& aRect
);
33 void UpdateSwSurface();
37 TBool
Stopped() const;
38 RWsSession
& Session();
40 CDsa
* CreateGlesDsaL();
46 virtual void ConstructL(RWindow
& aWindow
, CWsScreenDevice
& aDevice
);
47 virtual void SetUpdating(TBool aUpdate
);
49 virtual TUint8
* LockSurface() = 0;
50 virtual void UnlockHwSurface() = 0;
51 virtual void Resume() = 0;
53 virtual void DoBlt(CFbsBitmap
& aBmp
);
55 bool m_updateWholeScreen
;
58 CDsa(RWsSession
& aSession
);
66 ESdlThreadSuspend
= 0x100,
67 ESdlThreadExplicitStop
= 0x200
71 virtual void CreateSurfaceL(const TSize
& aSize
) = 0;
73 void ClipCopy(TUint8
* aTarget
, const TUint8
* aSource
, const TRect
& aUpdateRect
, const TRect
& aSourceRect
) const;
74 static void Copy256(const CDsa
& aDsa
, TUint32
* aTarget
, const TUint8
* aSource
, TInt aBytes
);
75 static void CopySlow(const CDsa
& aDsa
, TUint32
* aTarget
, const TUint8
* aSource
, TInt aBytes
);
76 static void CopyMem(const CDsa
& aDsa
, TUint32
* aTarget
, const TUint8
* aSource
, TInt aBytes
);
78 void SetCopyFunction();
85 TDisplayMode iSourceMode
;
86 TDisplayMode iTargetMode
;
88 TCopyFunction iCopyFunction
;
90 TCopyFunction iCFTable
[3];
96 inline TDisplayMode
CDsa::DisplayMode() const
101 inline TBool
CDsa::IsDsaAvailable() const
103 return iStateFlags
& ERunning
;