You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by be...@apache.org on 2013/03/06 22:48:34 UTC
ios commit: CB-1452 Media position incorrect after being set beyond
duration
Updated Branches:
refs/heads/master ef327d17e -> 1c88d9f58
CB-1452 Media position incorrect after being set beyond duration
- add protection when setting of media past duration
- reset position when player successfully completes
Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/1c88d9f5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/1c88d9f5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/1c88d9f5
Branch: refs/heads/master
Commit: 1c88d9f5844eb0a8e7d90163c45ca8a1fbaf307e
Parents: ef327d1
Author: James Jong <wj...@gmail.com>
Authored: Wed Mar 6 12:11:12 2013 -0500
Committer: Becky Gibson <be...@apache.org>
Committed: Wed Mar 6 16:38:08 2013 -0500
----------------------------------------------------------------------
CordovaLib/Classes/CDVSound.m | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/1c88d9f5/CordovaLib/Classes/CDVSound.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVSound.m b/CordovaLib/Classes/CDVSound.m
index 99515d7..1fd5ed3 100644
--- a/CordovaLib/Classes/CDVSound.m
+++ b/CordovaLib/Classes/CDVSound.m
@@ -458,9 +458,19 @@
double position = [[command.arguments objectAtIndex:1] doubleValue];
if ((audioFile != nil) && (audioFile.player != nil)) {
+ NSString* jsString;
double posInSeconds = position / 1000;
- audioFile.player.currentTime = posInSeconds;
- NSString* jsString = [NSString stringWithFormat:@"%@(\"%@\",%d,%f);", @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_POSITION, posInSeconds];
+ if (posInSeconds >= audioFile.player.duration) {
+ // The seek is past the end of file. Stop media and reset to beginning instead of seeking past the end.
+ [audioFile.player stop];
+ audioFile.player.currentTime = 0;
+ jsString = [NSString stringWithFormat:@"%@(\"%@\",%d,%.3f);\n%@(\"%@\",%d,%d);", @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_POSITION, 0.0, @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_STATE, MEDIA_STOPPED];
+ // NSLog(@"seekToEndJsString=%@",jsString);
+ } else {
+ audioFile.player.currentTime = posInSeconds;
+ jsString = [NSString stringWithFormat:@"%@(\"%@\",%d,%f);", @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_POSITION, posInSeconds];
+ // NSLog(@"seekJsString=%@",jsString);
+ }
[self.commandDelegate evalJs:jsString];
}
@@ -625,6 +635,7 @@
NSLog(@"Finished playing audio sample '%@'", audioFile.resourcePath);
}
if (flag) {
+ audioFile.player.currentTime = 0;
jsString = [NSString stringWithFormat:@"%@(\"%@\",%d,%d);", @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_STATE, MEDIA_STOPPED];
} else {
// jsString = [NSString stringWithFormat: @"%@(\"%@\",%d,%d);", @"cordova.require('cordova/plugin/Media').onStatus", mediaId, MEDIA_ERROR, MEDIA_ERR_DECODE];