--- 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<CSurfaceUpdateServer*> (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 <MSurfaceUpdateServerProvider*> (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;
}