From d994cbb77436bea9bffce716bc01c3c2bf1c0c86 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 27 Oct 2008 21:30:53 +0100 Subject: [PATCH] Reduce CSdlAppServ usability to nil. CSdlAppServ has no purpose now, but it needs to be there, because application can't exit properly without it (WTF?). --- src/main/symbian/SDL_main.cpp | 110 +++++++----------------------------- symbian/include/internal/epoc_sdl.h | 1 - 2 files changed, 20 insertions(+), 91 deletions(-) diff --git a/src/main/symbian/SDL_main.cpp b/src/main/symbian/SDL_main.cpp index e4c513b..974dda3 100644 --- a/src/main/symbian/SDL_main.cpp +++ b/src/main/symbian/SDL_main.cpp @@ -102,90 +102,26 @@ const void* TMainFunc::operator[](int aIndex) const class CSdlAppServ : public CActive { public: - enum + CSdlAppServ() : CActive(CActive::EPriorityIdle) { - EAppSrvDsaStatus, - }; - CSdlAppServ(); - void ConstructL(); - ~CSdlAppServ(); - int Request(int aService); - void Init(); - void SetParam(int aParam); + CActiveScheduler::Add(this); + SetActive(); + } + ~CSdlAppServ() { Cancel(); } + void Request() + { + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + } private: - void RunL(); - void DoCancel(); - const TThreadId iMainId; - RThread iAppThread; - int iService; - int iReturnValue; - TRequestStatus* iStatusPtr; -}; - -CSdlAppServ::CSdlAppServ() : CActive(CActive::EPriorityHigh), iMainId(RThread().Id()) -{} - -void CSdlAppServ::ConstructL() -{ - CActiveScheduler::Add(this); - iStatus = KRequestPending; - iStatusPtr = &iStatus; - SetActive(); -} - -CSdlAppServ::~CSdlAppServ() -{ - Cancel(); - iAppThread.Close(); -} - -int CSdlAppServ::Request(int aService) -{ - RunSingleThread(); - iService = aService; - iAppThread.RequestComplete(iStatusPtr, KErrNone); - return KErrNone; -} - -void CSdlAppServ::Init() -{ - PANIC_IF_ERROR(iAppThread.Open(iMainId)); -} - -void CSdlAppServ::SetParam(int aParam) -{ - iReturnValue = aParam; -} - -void CSdlAppServ::RunL() -{ - if(iStatus == KErrNone) - { - switch(iService) + void RunL() {} + void DoCancel() { - case EAppSrvDsaStatus: - if(gEpocEnv->iDsa != NULL) - gEpocEnv->iDsa->Stop(); - iReturnValue = KErrNone; - break; - - default: - PANIC(KErrNotSupported); - break; + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrCancel); } - - iStatus = KRequestPending; - iStatusPtr = &iStatus; - SetActive(); - } -} - -void CSdlAppServ::DoCancel() -{ - TRequestStatus* s = &iStatus; - iAppThread.RequestComplete(s, KErrCancel); -} +}; CEventQueue& EpocSdlEnv::EventQueue() { @@ -224,12 +160,6 @@ TBool EpocSdlEnv::AddUpdateRect(TUint8* aAddress, const TRect& aUpdateRect, cons return gEpocEnv->iDsa->AddUpdateRect(aAddress, aUpdateRect, aRect); } -void EpocSdlEnv::Request(int aService) -{ - __ASSERT_DEBUG(gEpocEnv != NULL, PANIC(KErrNotReady)); - gEpocEnv->iAppSrv->Request(aService); -} - TDisplayMode EpocSdlEnv::DisplayMode() { return gEpocEnv->iDsa == NULL ? ENone : gEpocEnv->iDsa->DisplayMode(); @@ -285,9 +215,13 @@ void EpocSdlEnv::CleanupItems() void EpocSdlEnv::FreeSurface() { - Request(CSdlAppServ::EAppSrvDsaStatus); + gEpocEnv->iAppSrv->Request(); + if(gEpocEnv->iDsa != NULL) + { + gEpocEnv->iDsa->Stop(); gEpocEnv->iDsa->Free(); + } } void EpocSdlEnvData::Free() @@ -367,8 +301,6 @@ static int MainL() static int DoMain() { - gEpocEnv->iAppSrv->Init(); - TRAPD(err, err = MainL()); // Free resources and return @@ -447,8 +379,6 @@ void CSDL::CallMainL() { ASSERT(gEpocEnv != NULL); - gEpocEnv->iAppSrv->ConstructL(); - // for handling volume up/down keys CRemConInterfaceSelector *iSelector = CRemConInterfaceSelector::NewL(); CRemConCoreApiTarget::NewL( *iSelector, *this ); diff --git a/symbian/include/internal/epoc_sdl.h b/symbian/include/internal/epoc_sdl.h index 2ffda81..e2c77db 100644 --- a/symbian/include/internal/epoc_sdl.h +++ b/symbian/include/internal/epoc_sdl.h @@ -39,7 +39,6 @@ class TSdlCleanupItem class EpocSdlEnv { public: - static void Request(TInt aService); static CEventQueue& EventQueue(); static TDisplayMode DisplayMode(); static TBool IsDsaAvailable(); -- 2.11.4.GIT