title: Flash MouseMove performance issue
body: <p>My Test Case is to draw Two triangles and then wait six millseconds. When doing this,it's fps is at 60.</p>
  
  <p>If I wave the mouse on the stage, then the fps is not stable. The Inactive time will increase and I have no way to decrease the inactive time. Why is this hapening.</p>
  
  <p>Below are several screenshots.</p>
  
  <p>Screen capture of scout:
  <a href="http://i.stack.imgur.com/xK0xV.png" rel="nofollow">http://i.stack.imgur.com/xK0xV.png</a></p>
  
  <p>GPUView fps Graph: 
  <a href="http://i.stack.imgur.com/XO0HQ.png" rel="nofollow">http://i.stack.imgur.com/XO0HQ.png</a></p>
  
  <p>And the code of the application</p>
  
  <pre><code>package
  {
  import com.adobe.utils.AGALMiniAssembler;
  import com.adobe.utils.PerspectiveMatrix3D;
  import flash.display.Bitmap;
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageDisplayState;
  import flash.display.StageScaleMode;
  import flash.display3D.Context3D;
  import flash.display3D.Context3DCompareMode;
  import flash.display3D.Context3DProgramType;
  import flash.display3D.Context3DTextureFormat;
  import flash.display3D.Context3DVertexBufferFormat;
  import flash.display3D.IndexBuffer3D;
  import flash.display3D.Program3D;
  import flash.display3D.VertexBuffer3D;
  import flash.display3D.textures.Texture;
  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.geom.Matrix3D;
  import flash.geom.Rectangle;
  import flash.text.TextField;
  import flash.utils.getTimer;
  
  
  [SWF(width="1000",height="600", backgroundColor = 0x000000, frameRate="60")]
  public class SingleThreadRender extends Sprite
  {
      [Embed( source = "RockSmooth.jpg" )]
      protected const TextureBitmap:Class;
  
      protected var context3D:Context3D;
  
      protected var vertexbuffer:VertexBuffer3D;
      protected var indexBuffer:IndexBuffer3D; 
      protected var program:Program3D;
      protected var texture:Texture;
      protected var projectionTransform:PerspectiveMatrix3D;
  
      private   var dataReady :Boolean = false;
  
  
      private   var text      :TextField = null;
  
      public function SingleThreadRender()
      {
          text = new TextField();
          text.text = "gogo";
          addChild(text);
          stage.mouseChildren = false;
  
          startRenderThread();
      }
  
  
      private function startRenderThread() :void {
          stage.stage3Ds[0].addEventListener( Event.CONTEXT3D_CREATE, initMolehill );
          stage.stage3Ds[0].requestContext3D();
          stage.scaleMode = StageScaleMode.NO_SCALE;
          stage.align = StageAlign.TOP_LEFT;  
          stage.stageHeight = 600
          stage.stageWidth = 800;
          addEventListener(Event.ENTER_FRAME, onRender);
          stage.addEventListener(MouseEvent.RIGHT_CLICK,rightClickHandler);
      }
  
      protected function initMolehill(e:Event):void
      {
          context3D = stage.stage3Ds[0].context3D;            
          context3D.configureBackBuffer(1000, 600, 1, true);
  
          var vertices:Vector.&lt;Number&gt; = Vector.&lt;Number&gt;([
              -3,-3, 0,0, 0, // x, y, z, u, v
              -3, 3, 0, 0, 1,
              3, -3, 0, 1, 1,
              3, 3, 0, 1, 0]);
          vertexbuffer = context3D.createVertexBuffer(4, 5);
          vertexbuffer.uploadFromVector(vertices, 0, 4);
          indexBuffer = context3D.createIndexBuffer(6);           
          indexBuffer.uploadFromVector (Vector.&lt;uint&gt;([0, 1, 2, 2, 3, 0]), 0, 6);
  
          var bitmap:Bitmap = new TextureBitmap();
  
          texture = context3D.createTexture(bitmap.bitmapData.width, bitmap.bitmapData.height, Context3DTextureFormat.BGRA, false);
          texture.uploadFromBitmapData(bitmap.bitmapData);
  
          var vertexShaderAssembler : AGALMiniAssembler = new AGALMiniAssembler();
          vertexShaderAssembler.assemble( Context3DProgramType.VERTEX,
              "m44 op, va0, vc0\n" + // pos to clipspace
              "mov v0, va1" // copy uv
          );
          var fragmentShaderAssembler : AGALMiniAssembler= new AGALMiniAssembler();
          fragmentShaderAssembler.assemble( Context3DProgramType.FRAGMENT,
              "tex ft1, v0, fs0 &lt;2d,linear,nomip&gt;\n" +
              "mov oc, ft1"
          );
  
          program = context3D.createProgram();
          program.upload( vertexShaderAssembler.agalcode, fragmentShaderAssembler.agalcode);
  
          projectionTransform = new PerspectiveMatrix3D();
          var aspect:Number = 4/3;
          var zNear:Number = 0.1;
          var zFar:Number = 1000;
          var fov:Number = 45*Math.PI/180;
          projectionTransform.perspectiveFieldOfViewLH(fov, aspect, zNear, zFar);
      }
  
      private function rightClickHandler(event :MouseEvent) :void {
          stage.removeEventListener(MouseEvent.RIGHT_CLICK,rightClickHandler);
          stage.fullScreenSourceRect = new Rectangle( 0,0,stage.fullScreenWidth,stage.fullScreenHeight);
          stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
      }
  
      private var firstTime :Boolean = true;
      protected function onRender(e:Event):void
      {
          if(stage.frameRate != 60) {
              stage.frameRate = 60;
          }
          if ( !context3D ) 
              return;
          var start :int = flash.utils.getTimer();
          var now :int = 0;
          while(true) {
              now = flash.utils.getTimer();
              if((now - start) &gt; 6) {
                  break;
              }
          }
  
          context3D.clear ( 1,1, 1, 1 );
  
          context3D.setDepthTest( true, Context3DCompareMode.LESS_EQUAL);
          context3D.setVertexBufferAt (0, vertexbuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
          context3D.setVertexBufferAt(1, vertexbuffer, 3, Context3DVertexBufferFormat.FLOAT_2);
          context3D.setTextureAt(0, texture);         
          context3D.setProgram(program);
          var m:Matrix3D = new Matrix3D();
          m.appendTranslation(0, 0, 2);
          m.append(projectionTransform);
  
          context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, m, true);
  
          var i:int = 2;
          while(i--)
              context3D.drawTriangles(indexBuffer,0,2);
          context3D.present();
  
          while(true) {
              now = flash.utils.getTimer();
              if((now - start) &gt; 6) {
                  break;
              }
          }
  
      }
  }
  </code></pre>