uiacceltk/hitchcock/AlfDecoderServerClient/src/alfcompositionclient.cpp
changeset 21 6ce30188c5bf
parent 19 f5bac0badc7e
child 31 1b6909418757
--- a/uiacceltk/hitchcock/AlfDecoderServerClient/src/alfcompositionclient.cpp	Mon May 03 13:22:43 2010 +0300
+++ b/uiacceltk/hitchcock/AlfDecoderServerClient/src/alfcompositionclient.cpp	Fri May 14 16:46:13 2010 +0300
@@ -295,7 +295,9 @@
             }
         case KAlfCompOpBindSourceToToken:
             {
+#ifdef _ALF_LOGGING
             RDebug::Print(_L("ptr0: %d, Target %d, Flags %d, combinedtarget"), ptr[0], ptr[1], ptr[2]);
+#endif // #ifdef _ALF_LOGGING
             if( ptr[1] != 0) // add binding information for new host to given target with permitted operations
                 {
                 iHostBindingsHash.Insert(*ptr, ptr[1]);
@@ -479,7 +481,9 @@
 void CAlfCompositionSource::ConstructL(TInt aWsHandle, TInt aGroupHandle, TInt aScreenNumber)
     {
     iData = CAlfCompositionSourceData::NewL();
+#ifdef _ALF_LOGGING
     RDebug::Print(_L("CAlfCompositionClientBase::ConstructL - %d"), iData );
+#endif // #ifdef _ALF_LOGGING
 
     User::LeaveIfError( SendEvent(KAlfCompositionSourceScreenNumber, &aScreenNumber, sizeof(TInt)));
     
@@ -698,7 +702,9 @@
 void CAlfCompositionHost::ConstructL(TInt aToken, TInt aKey)
     {
     iData = CAlfCompositionSourceData::NewL();
+#ifdef _ALF_LOGGING
     RDebug::Print(_L("CAlfCompositionClientBase::ConstructL - %d"), iData );
+#endif // #ifdef _ALF_LOGGING
 
     TInt array[] = { 0, aToken, aKey }; 
     TInt result  = SendEvent(KAlfCompOpBindSourceToToken, array, sizeof(array));   
@@ -1237,6 +1243,7 @@
     {
     public:
         virtual void Remove(CAlfSignalObserver* aObserver) = 0;
+        virtual RAlfBridgerClient& Client() = 0;
     };
 
 NONSHARABLE_CLASS(CAlfEffectObserver::CAlfEffectObserverData): public CBase, public MAlfEffectObserverData
@@ -1245,6 +1252,7 @@
     void SubscribeCallbackL(MAlfEffectObserver* aObserver, TInt aHandle, TInt aType = MAlfEffectObserver::EAlfEffectComplete );        
     ~CAlfEffectObserverData();
     void Remove(CAlfSignalObserver* aObserver);
+    RAlfBridgerClient& Client();
     
     // data
     RAlfBridgerClient iClient;
@@ -1261,20 +1269,40 @@
         CActiveScheduler::Add(this);
         SetActive(); 
         }
-                
-    void DoCancel(){} // do not...
+		
+    ~CAlfSignalObserver()
+        {
+        Cancel();
+        }
+
+    private:
     
+        void DoCancel()
+            {
+            if (iOwner)
+                {
+                iOwner->Client().SendSynch(EAlfCompleteSignal, TIpcArgs(iHandle, iType));
+                }
+            }
+    
+	    // just to prohibit cancel outside destructor
+        void Cancel()
+            {
+            CActive::Cancel();
+			}	   
+	
     void RunL()
         {    
         iObserver->HandleEffectCallback(iType, iHandle, iStatus.Int());
         iOwner->Remove(this);
         }    
     
-    MAlfEffectObserverData* iOwner;
-    CAlfEffectObserver::MAlfEffectObserver* iObserver;
-    TInt iHandle;        
-    TInt iType;
-    TIpcArgs iArgs;
+	public:
+        MAlfEffectObserverData* iOwner;
+        CAlfEffectObserver::MAlfEffectObserver* iObserver;
+        TInt iHandle;        
+        TInt iType;
+        TIpcArgs iArgs;
     };
 
 void CAlfEffectObserver::CAlfEffectObserverData::SubscribeCallbackL(MAlfEffectObserver* aObserver, TInt aHandle, TInt aType)
@@ -1288,15 +1316,24 @@
         
 CAlfEffectObserver::CAlfEffectObserverData::~CAlfEffectObserverData()
     {    
+    iObservers.ResetAndDestroy();
+    iObservers.Close();
     iClient.Close(); // destroys signals
-    iObservers.ResetAndDestroy();
     }
-        
+
+RAlfBridgerClient& CAlfEffectObserver::CAlfEffectObserverData::Client()
+    {
+    return iClient;
+    }
+
 void CAlfEffectObserver::CAlfEffectObserverData::Remove(CAlfSignalObserver* aObserver)
     {
     TInt index = iObservers.Find(aObserver);
-    iObservers.Remove(index);
-    delete aObserver;   
+    if (index != KErrNotFound)
+        {
+        iObservers.Remove(index);
+        }
+    delete aObserver;
     }    
     
 EXPORT_C CAlfEffectObserver* CAlfEffectObserver::NewL()
@@ -1311,7 +1348,7 @@
 
 EXPORT_C CAlfEffectObserver::~CAlfEffectObserver()
     {
-    delete iData;        
+    delete iData; 
     }
 
 EXPORT_C TInt CAlfEffectObserver::ActiveEffectsCount()
@@ -1324,11 +1361,18 @@
     iData->SubscribeCallbackL(aObserver, aHandle, aType ); 
     }
 
+EXPORT_C void CAlfEffectObserver::SetDistractionWindow(const RWindowTreeNode& aWindow, TInt aState)
+    {
+    if (!&aWindow)
+        {
+        return;
+        }
+    iData->iClient.SendSynch(EAlfSetDistractionWindow, TIpcArgs(aWindow.WindowGroupId(), aWindow.ClientHandle(), aState));
+    }
+
 CAlfEffectObserver::CAlfEffectObserver()
     {
     }
-
  
+//end of file
 
-
-//end of file