5 #include <remconcoreapitargetobserver.h>
12 class CWsScreenDevice
;
19 typedef int (*mainfunc1
) ();
20 typedef int (*mainfunc2
) (int argc
, char* argv
[]);
21 typedef int (*mainfunc3
) (int argc
, char* argv
[], char* env
[]);
22 typedef void (*mainfunc4
) ();
23 typedef void (*mainfunc5
) (int argc
, char* argv
[]);
24 typedef void (*mainfunc6
) (int argc
, char* argv
[], char* env
[]);
30 int SDL_main (int argc
, char* argv
[]);
44 const void* operator[](TInt aIndex
) const;
53 enum //these events indicates the state changes in SDL
55 EEventWindowReserved
, //window is created, nothing else should use the window
56 EEventWindowNotAvailable
, //window not available, can be ignored
57 EEventSuspend
, //SDL thread will be stopped next
58 EEventResume
, //SDL thread resumed
59 EEventKeyMapInit
, //Keymap is inited and can now be rewritten
62 enum //these are fixed return values that event handler sends back to SDL
65 ESuspendNoSuspend
//after EEventSuspend, prevents the suspend.
67 virtual TInt
SdlEvent(TInt aEvent
, TInt aParam
) = 0; //event is called in application thread
71 class CSDL
: public CBase
, public MRemConCoreApiTargetObserver
74 enum TFlags
//these flags set SDL modes
77 EEnableFocusStop
= 0x1, //let SDL thread to be stopped if not on top
78 EMainThread
= 0x2000, //always put SDL in application thread
81 static CSDL
* NewL(TInt aFlags
= CSDL::ENoFlags
);
82 MSDLObserver
* Observer(); //get current observer
83 void SetObserver(MSDLObserver
* aObserver
); //set observer to receive events, if NULL then observer is removed
84 void SetContainerWindowL(RWindow
& aWindow
, RWsSession
& aSession
, CWsScreenDevice
& aDevice
); //the window where drawn happens, should be recalled (propably in application HandleResourceChange) if screen device changes
86 TInt
AppendWsEvent(const TWsEvent
& aEvent
); //give event to SDL, return error code if event buffer is full (insert in application HandleWsEvent)
87 TInt
GetSDLCode(TInt aScanCode
); //get SDL internal key code bind to given scancode, return -1 if scancode is not found, aScancode must be postive number
88 TInt
SetSDLCode(TInt aScanCode
, TInt aSDLCode
); //set internal SDL code with given key code, return replaced code
89 TInt
SDLCodesCount() const; //return count of scancodes
90 void ResetSDLCodes(); //rest all code replacement to their initial values
91 void Resume(); //restart SDL main
92 void Suspend(); //stop SDL main
93 void SDLPanic(const TDesC
& aInfo
, TInt aErr
); //Panic from SDL thread (see SDLThreadEvent)
94 TThreadId
CallMainL(const TMainFunc
& aFunc
, TRequestStatus
* const aStatus
, const CDesC8Array
* const iArg
, TInt aStackSize
); //internal
97 void MrccatoCommand(TRemConCoreApiOperationId aOperationId
, TRemConCoreApiButtonAction aButtonAct
);