graphicscomposition/surfaceupdate/src/surfaceupdateserver.cpp
branchRCL_3
changeset 164 25ffed67c7ef
parent 163 bbf46f59e123
--- 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;
 	}