webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp
changeset 27 6297cdf66332
parent 26 cb62a4f66ebe
child 37 ac77f89b1d9e
--- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp	Thu Jan 07 13:31:38 2010 +0200
+++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp	Mon Jan 18 21:20:18 2010 +0200
@@ -1,21 +1,38 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* ==============================================================================
+*    Copyright (c) 2006, Nokia Corporation
+*    All rights reserved.
+*
+*   Redistribution and use in source and binary forms, with or without
+*   modification, are permitted provided that the following conditions
+*   are met:
 *
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
+*      * Redistributions of source code must retain the above copyright
+*        notice, this list of conditions and the following disclaimer.
+*      * Redistributions in binary form must reproduce the above copyright
+*        notice, this list of conditions and the following disclaimer in
+*        the documentation and/or other materials provided with the
+*        distribution.
+*      * Neither the name of the Nokia Corporation nor the names of its
+*        contributors may be used to endorse or promote products derived
+*        from this software without specific prior written permission.
 *
-* Description: 
+*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+*   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+*   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+*   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+*   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+*   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+*   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+*   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+*   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+*   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+*   USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+*   DAMAGE.
 *
+* ==============================================================================
 */
 
-
 /*
  *  This class is wrapped by a proxy CAnimationDecoder
  *  
@@ -66,8 +83,8 @@
     , iObserver(aObs)
     , iLoopCount( -1 )
     , iCurLoopCount( -1 )
-    , iSyncBitmapHandle(-1)
-    , iSyncMaskHandle(-1)
+    , iSyncBitmapHandle(0)
+    , iSyncMaskHandle(0)
     , iDecodeInProgress(ETrue)
     , iIsInvalid(EFalse)
     , iCanBeDeleted(ETrue)
@@ -158,17 +175,25 @@
         return iDestination; 
     }
         
-    if (iSyncBitmapHandle != -1 && iSyncMaskHandle != -1) {
+    if (iSyncBitmapHandle || iSyncMaskHandle) {       
         CFbsBitmap* bitmap = new CFbsBitmap();
-        bitmap->Duplicate(iSyncBitmapHandle);
-        CFbsBitmap* mask = new CFbsBitmap();
-        mask->Duplicate(iSyncMaskHandle);
+        TInt errBmp = bitmap->Duplicate(iSyncBitmapHandle);
+        
+        CFbsBitmap* mask = NULL;
+        TInt errMask = KErrNone;
+        if(iSyncMaskHandle) {
+            CFbsBitmap* mask = new CFbsBitmap();
+            errMask = mask->Duplicate(iSyncMaskHandle);
+        }
+        
+        if(errBmp==KErrNone && errMask==KErrNone) {
+            iDestination = new CMaskedBitmap(bitmap, mask);
+            iDestination->SetFrameIndex(0);
+            iDestination->SetFrameDelay(0);
+        }
 
-        iDestination = new CMaskedBitmap(bitmap, mask);
-        iDestination->SetFrameIndex(0);
-        iDestination->SetFrameDelay(0);
-        iSyncBitmapHandle = -1;
-        iSyncMaskHandle = -1;
+        iSyncBitmapHandle = 0;
+        iSyncMaskHandle = 0;
     }
     
     return iDestination;