diff -r bbf46f59e123 -r 25ffed67c7ef graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp --- a/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp Tue Aug 31 16:31:06 2010 +0300 +++ b/graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp Wed Sep 01 12:39:21 2010 +0100 @@ -25,10 +25,9 @@ #endif + const TUint KDefaultHeapSize=0x10000; -void *gProvider = NULL; -RFastLock gProviderFastLock; /** The server maintains session with the clients. @@ -352,14 +351,12 @@ { TInt numElement = iUpdateReceiverNotificationBatches.Count(); CUpdateReceiverNotificationBatch* notifier = NULL; - CSurfaceUpdateServer* server = (CSurfaceUpdateServer*) Server(); for(TInt index = 0; index < numElement; index++) { notifier = iUpdateReceiverNotificationBatches[index]; if(notifier->iType == EUpdateSrvReusable) { __ASSERT_ALWAYS(notifier->iMsg.IsNull(), CSurfaceUpdateServer::PanicServer(EUpdateServPanicDataIntegrity)); - notifier->SetNumUpdateReceivers(server->NumUpdateReceivers()); if(numElement > index + 1) { //to improve a search, append the element to the end of the array @@ -370,6 +367,7 @@ } } + CSurfaceUpdateServer* server = (CSurfaceUpdateServer*) Server(); notifier = new (ELeave) CUpdateReceiverNotificationBatch(this, server->NumUpdateReceivers()); CleanupStack::PushL(notifier); iUpdateReceiverNotificationBatches.AppendL(notifier); @@ -885,20 +883,6 @@ } #endif - -/** -Set number of UpdateReceivers - called when update receivers are added/removed. - -@param aNumUpdateReceivers - new number of update receivers for the batch. - */ -void CUpdateReceiverNotificationBatch::SetNumUpdateReceivers(TInt aNumUpdateReceivers) - { - __ASSERT_DEBUG(aNumUpdateReceivers >= 0 && aNumUpdateReceivers < 1000 /* arbitrary "large" limit */, - CSurfaceUpdateServer::PanicServer(EUpdateServPanicDataIntegrity)); - __ASSERT_DEBUG(iType == EUpdateSrvReusable, - CSurfaceUpdateServer::PanicServer(EUpdateServPanicDataIntegrity)); - iNumUpdateReceivers = aNumUpdateReceivers; - } /** The class will be used by composition receiver @@ -971,11 +955,6 @@ if(thread.Open(iThreadId) == KErrNone) { - TInt err = gProviderFastLock.CreateLocal(); - __ASSERT_ALWAYS(err == KErrNone || err == KErrAlreadyExists, CSurfaceUpdateServer::PanicServer(EUpdateServPanicGlobalFastLock)); - - gProviderFastLock.Wait(); - gProvider = NULL; if (iServer) { while((static_cast (iServer))-> iNumberPendingNotification) @@ -990,7 +969,7 @@ User::WaitForRequest(status1); thread.Close(); - gProviderFastLock.Close(); + Dll::SetTls(NULL); } #endif } @@ -1040,25 +1019,14 @@ EXPORT_C TInt StartSurfaceUpdateServer(MSurfaceUpdateServerProvider*& aSurfaceUpdateServerProvider) { #ifndef TEST_SURFACE_UPDATE - TPtrC serverName(KSurfaceUpdateServerName); + TPtrC serverName(KSurfaceUpdateServerName); #else - TPtrC serverName(KTestSurfaceUpdateServerName); -#endif - //locking - TInt err = gProviderFastLock.CreateLocal(); - - if (err != KErrNone && err != KErrAlreadyExists) - { - return err; - } - - gProviderFastLock.Wait(); - - TAny *provider = gProvider; + TPtrC serverName(KTestSurfaceUpdateServerName); +#endif + TAny *provider = Dll::Tls(); if(provider) { aSurfaceUpdateServerProvider = static_cast (provider); - gProviderFastLock.Signal(); return KErrNone; } TFullName name; @@ -1075,7 +1043,6 @@ TRAP(res, tm.FormatL(buf, _L("_%H%T%S%C"))); if(res != KErrNone) { - gProviderFastLock.Signal(); return res; } TBuf<128> threadName(serverName); @@ -1099,7 +1066,7 @@ serverThread.Resume(); User::WaitForRequest(rendezvousStatus); res = rendezvousStatus.Int(); - gProvider = aSurfaceUpdateServerProvider; + Dll::SetTls(aSurfaceUpdateServerProvider); } // The thread has not been created - clearly there's been a problem. else @@ -1107,6 +1074,5 @@ serverThread.Close(); } } - gProviderFastLock.Signal(); return res; }