diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp
index 2a137cc39b8234d66e4d55bd40081972fbecd784..d3e66289d1a4f2b1efff1b5a01be693d53358ab3 100755
--- a/indra/newview/llattachmentsmgr.cpp
+++ b/indra/newview/llattachmentsmgr.cpp
@@ -421,6 +421,15 @@ void LLAttachmentsMgr::onDetachCompleted(const LLUUID& inv_item_id)
     mQuestionableCOFLinks.addTime(inv_item_id);
 }
 
+bool LLAttachmentsMgr::isAttachmentStateComplete() const
+{
+    return  mPendingAttachments.empty()
+        && mAttachmentRequests.empty()
+        && mDetachRequests.empty()
+        && mRecentlyArrivedAttachments.empty()
+        && mQuestionableCOFLinks.empty();
+}
+
 // Check for attachments that are (a) linked in COF and (b) not
 // attached to the avatar.  This is a rotten function to have to
 // include, because it runs the risk of either repeatedly spamming out
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index fab146cb52522f1863a46632bbd4b6f549b33648..bb7d35edbcb740fab527b167831093b0f2a9acb5 100755
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -87,10 +87,7 @@ class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
     void onDetachRequested(const LLUUID& inv_item_id);
     void onDetachCompleted(const LLUUID& inv_item_id);
 
-    bool hasPendingAttachments() { return mPendingAttachments.size() > 0; }
-    bool hasAttachmentRequests() { return mAttachmentRequests.size() > 0; }
-    bool hasDetachRequests() { return mAttachmentRequests.size() > 0; }
-    bool hasRecentlyArrivedAttachments() { return mRecentlyArrivedAttachments.size() > 0; }
+    bool isAttachmentStateComplete() const;
 
 private:
 
diff --git a/indra/newview/llavatarrendernotifier.cpp b/indra/newview/llavatarrendernotifier.cpp
index ca3c1a73106e02259d3ea8f032195169841f8b1c..53be573461e8f5756717c27061d1f04ea8b7801a 100644
--- a/indra/newview/llavatarrendernotifier.cpp
+++ b/indra/newview/llavatarrendernotifier.cpp
@@ -191,9 +191,7 @@ void LLAvatarRenderNotifier::updateNotificationState()
 
     if (mInitialCofVersion < 0
         && gAgentWearables.areWearablesLoaded()
-        && !LLAttachmentsMgr::getInstance()->hasPendingAttachments()
-        && !LLAttachmentsMgr::getInstance()->hasAttachmentRequests()
-        && !LLAttachmentsMgr::getInstance()->hasRecentlyArrivedAttachments())
+        && LLAttachmentsMgr::getInstance()->isAttachmentStateComplete())
     {
         // cof formed
         mInitialCofVersion = LLAppearanceMgr::instance().getCOFVersion();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3e20fbecdbd4d97ccf1d1d8f1b62eb67e1f7ad74..da02b96f807148369d1fbe36c0f0b8f73b8c07f1 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6458,7 +6458,7 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
 	mFullyLoadedInitialized = TRUE;
 	mFullyLoadedFrameCounter++;
 
-    if (isSelf())
+    if (changed && isSelf())
     {
         // to know about outfit switching
         LLAvatarRenderNotifier::getInstance()->updateNotificationState();