--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/customization/ScreenSaverAdapter/ScreenSaverServer/src/ScreenSaverServer.cpp Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2007 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: Implementation of customization components
+*
+*/
+
+
+
+#include "ScreenSaverServer.h"
+#include "ScreenSaverClientServer.h"
+#include "ScreenSaverSession.h"
+
+#include "debug.h"
+
+
+
+
+
+// ----------------------------------------------------------------------------------------
+// Server startup code
+// ----------------------------------------------------------------------------------------
+static void RunServerL()
+ {
+ // naming the server thread after the server helps to debug panics
+ __UHEAP_MARK;
+
+ User::LeaveIfError(User::RenameThread(KDMSSServerName));
+
+ // create and install the active scheduler
+
+ CActiveScheduler* s=new(ELeave) CActiveScheduler;
+ CleanupStack::PushL(s);
+ CActiveScheduler::Install(s);
+ __UHEAP_MARK;
+
+ // create the server (leave it on the cleanup stack)
+ CServer2 *t = CScreenSaverServer::NewLC();
+ // Initialisation complete, now signal the client
+
+ RProcess::Rendezvous(KErrNone);
+
+ // Ready to run
+ RDEBUG("CScreenSaverServer is running");
+ CActiveScheduler::Start();
+
+
+ // Cleanup the server and scheduler
+ CleanupStack::PopAndDestroy(t);
+ __UHEAP_MARKEND;
+
+ CleanupStack::PopAndDestroy(s);
+ __UHEAP_MARKEND;
+ }
+
+// Server process entry-point
+TInt E32Main()
+ {
+ __UHEAP_MARK;
+ RDEBUG("CScreenSaverServer: E32Main");
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ TInt r=KErrNoMemory;
+ if (cleanup)
+ {
+ TRAP(r,RunServerL());
+ RDEBUG_2("CScreenSaverServer closed with code: %d", r);
+ delete cleanup;
+ }
+ __UHEAP_MARKEND;
+ return r;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CShutDown::CShutdown()
+// -----------------------------------------------------------------------------
+
+inline CShutdown::CShutdown()
+ :CTimer(-1)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+// -----------------------------------------------------------------------------
+// CShutDown::ConstructL()
+// -----------------------------------------------------------------------------
+
+inline void CShutdown::ConstructL()
+ {
+ CTimer::ConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CShutDown::Start()
+// -----------------------------------------------------------------------------
+
+inline void CShutdown::Start()
+ {
+
+ RDEBUG( "creenSaverServer: starting shutdown timeout" );
+
+ After(KScreenSaverServerShutdownDelay);
+ //SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CShutDown::RunL()
+// -----------------------------------------------------------------------------
+
+void CShutdown::RunL()
+ {
+ RDEBUG( "creenSaverServer timeout ... closing" );
+ CActiveScheduler::Stop();
+ }
+
+
+
+
+CServer2* CScreenSaverServer::NewLC()
+ {
+ RDEBUG("CScreenSaverServer::NewLC - start");
+
+ CScreenSaverServer* self=new(ELeave) CScreenSaverServer;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ RDEBUG("CScreenSaverServer::NewLC - end");
+ return self;
+ }
+
+
+
+void CScreenSaverServer::ConstructL()
+ {
+ RDEBUG("CScreenSaverServer::ConstructL start");
+
+ StartL(KDMSSServerName);
+ iShutdown.ConstructL();
+ iShutdown.Start();
+
+ RDEBUG("CScreenSaverServer::ConstructL end");
+ }
+
+
+CScreenSaverServer::CScreenSaverServer() :CServer2(0)
+ {
+ RDEBUG("CScreenSaverServer::CScreenSaverServer()");
+ }
+ // -----------------------------------------------------------------------------
+// CApplicationManagementServer::AddSession()
+// -----------------------------------------------------------------------------
+
+void CScreenSaverServer::AddSession()
+ {
+ // A new session is being created
+ RDEBUG( "CScreenSaverServer::AddSession" );
+ ++iSessionCount;
+
+ // Cancel the shutdown timer if it was running
+ iShutdown.Cancel();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CApplicationManagementServer::DropSession()
+// -----------------------------------------------------------------------------
+
+void CScreenSaverServer::DropSession()
+ {
+ // A session is being destroyed
+ RDEBUG( "CScreenSaverServer::DropSession" );
+
+ // Start the shutdown timer if it is the last session
+ if ( --iSessionCount == 0 )
+ {
+ iShutdown.Start();
+ }
+ }
+
+
+
+
+CScreenSaverServer::~CScreenSaverServer()
+ {
+ RDEBUG("CScreenSaverServer::CScreenSaverServer()");
+ }
+
+
+
+CSession2* CScreenSaverServer::NewSessionL(const TVersion&,const RMessage2&) const
+ {
+ RDEBUG("CScreenSaverServer::NewSessionL");
+ return new (ELeave) CScreenSaverSession();
+ }
+
+
+void CScreenSaverServer::GetAvailableScreenSaversL(RImplInfoPtrArray& aScreenSaverList)
+ {
+ RDEBUG("CScreenSaverServer::GetAvailableScreenSavers()");
+ CScreensaverPluginInterfaceDefinition::ListImplementationsL( aScreenSaverList );
+ REComSession::FinalClose();
+ }