diff --git a/layout/base/nsCaret.cpp b/layout/base/nsCaret.cpp index 9cddf0a9bb5..2613a54db3f 100644 --- a/layout/base/nsCaret.cpp +++ b/layout/base/nsCaret.cpp @@ -496,19 +496,18 @@ void nsCaret::KillTimer() //----------------------------------------------------------------------------- nsresult nsCaret::PrimeTimer() { - KillTimer(); - // set up the blink timer if (!mReadOnly && mBlinkRate > 0) { - nsresult err; - mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1", &err); - - if (NS_FAILED(err)) - return err; - + if (!mBlinkTimer) { + nsresult err; + mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1", &err); + if (NS_FAILED(err)) + return err; + } + mBlinkTimer->InitWithFuncCallback(CaretBlinkCallback, this, mBlinkRate, - nsITimer::TYPE_REPEATING_PRECISE); + nsITimer::TYPE_REPEATING_SLACK); } return NS_OK; diff --git a/layout/base/src/nsCaret.cpp b/layout/base/src/nsCaret.cpp index 9cddf0a9bb5..2613a54db3f 100644 --- a/layout/base/src/nsCaret.cpp +++ b/layout/base/src/nsCaret.cpp @@ -496,19 +496,18 @@ void nsCaret::KillTimer() //----------------------------------------------------------------------------- nsresult nsCaret::PrimeTimer() { - KillTimer(); - // set up the blink timer if (!mReadOnly && mBlinkRate > 0) { - nsresult err; - mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1", &err); - - if (NS_FAILED(err)) - return err; - + if (!mBlinkTimer) { + nsresult err; + mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1", &err); + if (NS_FAILED(err)) + return err; + } + mBlinkTimer->InitWithFuncCallback(CaretBlinkCallback, this, mBlinkRate, - nsITimer::TYPE_REPEATING_PRECISE); + nsITimer::TYPE_REPEATING_SLACK); } return NS_OK;