     
     public func startMetering()
     {
-        meterTimer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "updateMeter", userInfo: nil, repeats: true)
+        meterLink = CADisplayLink(target: self, selector: "updateMeter")
+        meterLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
     }
     
     public func updateMeter()

    
    public func stopMetering()
    {
        meterTimer.invalidate()
    }
    
}

    var delegate: RecorderDelegate!
    var metering: Bool
    var url: NSURL!
    var meterLink: CADisplayLink!
    
    var directory: NSString {
        return NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
