                 validateNow();
         }
         
-        // Run transition
+        // Run transition a frame later so that the overhead of creating the view
+		// and the time the player takes to render isn't included in the duration.
+		// See SDK-27793.
         if (transition)
         {
-//            CONFIG::performanceInstrumentation
-            {
-                if (hasEventListener("transitionStart"))
-                    dispatchEvent(new Event("transitionStart", false, false));
-            }
-            
-            transition.play();
+			transition.prepareFinalState();
+			finalViewTransition = transition;
+			
+			addEventListener(Event.ENTER_FRAME, startViewTransition);
         }
         else
         {

        }
    }

    /**
     *  @private
     *  Called when a transition dispatches a COMPLETE event.

               dispatchEvent(new Event("transitionEnd", false, false));
        }
        
		finalViewTransition = null;
        endViewChange();
    }
    
