diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 8c33c94bbe891a99c73aed8228be150ac3e1dd18..70f15e0057a3b1ee29144376471c660fbb73646b 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1482,13 +1482,17 @@ LLCallDialog(payload)
 	}	
 }
 
-void LLOutgoingCallDialog::draw()
+void LLCallDialog::draw()
 {
 	if (lifetimeHasExpired())
 	{
 		onLifetimeExpired();
 	}
-	LLDockableFloater::draw();
+
+	if (getDockControl() != NULL)
+	{
+		LLDockableFloater::draw();
+	}
 }
 
 bool LLOutgoingCallDialog::lifetimeHasExpired()
@@ -1633,14 +1637,6 @@ LLIncomingCallDialog::LLIncomingCallDialog(const LLSD& payload) :
 LLCallDialog(payload)
 {
 }
-void LLIncomingCallDialog::draw()
-{
-	if (lifetimeHasExpired())
-	{
-		onLifetimeExpired();
-	}
-	LLDockableFloater::draw();
-}
 
 bool LLIncomingCallDialog::lifetimeHasExpired()
 {
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index d0ac819161ee2bb16a145bf4cfa682091b8bed67..cec9d1642f4d7c793d7f2f9d8f74a1363fa4e007 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -488,6 +488,9 @@ class LLCallDialog : public LLDockableFloater
 
 	virtual BOOL postBuild();
 
+	// check timer state
+	/*virtual*/ void draw();
+
 protected:
 	// lifetime timer for a notification
 	LLTimer	mLifetimeTimer;
@@ -509,9 +512,6 @@ class LLIncomingCallDialog : public LLCallDialog
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	// check timer state
-	/*virtual*/ void draw();
-
 	static void onAccept(void* user_data);
 	static void onReject(void* user_data);
 	static void onStartIM(void* user_data);
@@ -533,9 +533,6 @@ class LLOutgoingCallDialog : public LLCallDialog
 	static void onCancel(void* user_data);
 	static const LLUUID OCD_KEY;
 
-	// check timer state
-	/*virtual*/ void draw();
-
 private:
 	// hide all text boxes
 	void hideAllText();