Merge "[4.0] Fixed an issue where the text would multiply the alpha value twice"... accepted/tizen/4.0/unified/20171129.150245 submit/tizen_4.0/20171129.111338
authorHyunJu Shin <hyunjushin@samsung.com>
Wed, 29 Nov 2017 11:06:34 +0000 (11:06 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Wed, 29 Nov 2017 11:06:34 +0000 (11:06 +0000)
dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/visuals/texture-manager-impl.h

index c1eb0e4..a451a2a 100644 (file)
@@ -423,7 +423,8 @@ void Controller::Impl::CalculateTextUpdateIndices( Length& numberOfCharacters )
     mTextUpdateInfo.mParagraphCharacterIndex = 0u;
     numberOfCharacters = 0u;
 
-    mTextUpdateInfo.mRequestedNumberOfCharacters = mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove;
+    // prevent mTextUpdateInfo.mRequestedNumberOfCharacters value underflow
+    mTextUpdateInfo.mRequestedNumberOfCharacters = ( mTextUpdateInfo.mNumberOfCharactersToAdd < mTextUpdateInfo.mNumberOfCharactersToRemove ? 0u : mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove );
 
     // Nothing else to do if there are no paragraphs.
     return;
@@ -439,7 +440,9 @@ void Controller::Impl::CalculateTextUpdateIndices( Length& numberOfCharacters )
       // Text is being added in a new paragraph after the last character of the text.
       mTextUpdateInfo.mParagraphCharacterIndex = mTextUpdateInfo.mPreviousNumberOfCharacters;
       numberOfCharacters = 0u;
-      mTextUpdateInfo.mRequestedNumberOfCharacters = mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove;
+
+      // prevent mTextUpdateInfo.mRequestedNumberOfCharacters value underflow
+      mTextUpdateInfo.mRequestedNumberOfCharacters = ( mTextUpdateInfo.mNumberOfCharactersToAdd < mTextUpdateInfo.mNumberOfCharactersToRemove ? 0u : mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove );
 
       mTextUpdateInfo.mStartGlyphIndex = mModel->mVisualModel->mGlyphs.Count();
       mTextUpdateInfo.mStartLineIndex = mModel->mVisualModel->mLines.Count() - 1u;
@@ -491,7 +494,15 @@ void Controller::Impl::CalculateTextUpdateIndices( Length& numberOfCharacters )
     }
   }
 
-  mTextUpdateInfo.mRequestedNumberOfCharacters = numberOfCharacters + mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove;
+  // prevent mTextUpdateInfo.mRequestedNumberOfCharacters value underflow
+  if( numberOfCharacters + mTextUpdateInfo.mNumberOfCharactersToAdd < mTextUpdateInfo.mNumberOfCharactersToRemove )
+  {
+    mTextUpdateInfo.mRequestedNumberOfCharacters = 0u;
+  }
+  else
+  {
+    mTextUpdateInfo.mRequestedNumberOfCharacters = numberOfCharacters + mTextUpdateInfo.mNumberOfCharactersToAdd - mTextUpdateInfo.mNumberOfCharactersToRemove;
+  }
   mTextUpdateInfo.mStartGlyphIndex = *( mModel->mVisualModel->mCharactersToGlyph.Begin() + mTextUpdateInfo.mParagraphCharacterIndex );
 }
 
index 7693b1c..b385344 100644 (file)
@@ -376,7 +376,7 @@ private:
     }
 
     TextureId           textureId;   ///< The external Texture Id assigned to this load
-    unsigned short      loadId;      ///< The load Id used by the async loader to reference this load
+    uint32_t            loadId;      ///< The load Id used by the async loader to reference this load
   };
 
   // Private typedefs: