MediaSync: pass the error code of setPlaybackRate from native code to JAVA.
Bug: 19666434
Change-Id: I9c892b1e487b3bcdce49ff067e42995194cf6585
diff --git a/media/jni/android_media_MediaSync.cpp b/media/jni/android_media_MediaSync.cpp
index b96c733..e167f83 100644
--- a/media/jni/android_media_MediaSync.cpp
+++ b/media/jni/android_media_MediaSync.cpp
@@ -71,8 +71,8 @@
return mSync->createInputSurface(bufferProducer);
}
-void JMediaSync::setPlaybackRate(float rate) {
- mSync->setPlaybackRate(rate);
+status_t JMediaSync::setPlaybackRate(float rate) {
+ return mSync->setPlaybackRate(rate);
}
sp<const MediaClock> JMediaSync::getMediaClock() {
@@ -115,15 +115,23 @@
static void throwExceptionAsNecessary(
JNIEnv *env, status_t err, const char *msg = NULL) {
switch (err) {
- case INVALID_OPERATION:
- jniThrowException(env, "java/lang/IllegalStateException", msg);
+ case NO_ERROR:
break;
case BAD_VALUE:
jniThrowException(env, "java/lang/IllegalArgumentException", msg);
break;
+ case NO_INIT:
+ case INVALID_OPERATION:
default:
+ if (err > 0) {
+ break;
+ }
+ AString msgWithErrorCode(msg);
+ msgWithErrorCode.append(" error:");
+ msgWithErrorCode.append(err);
+ jniThrowException(env, "java/lang/IllegalStateException", msgWithErrorCode.c_str());
break;
}
}
@@ -295,7 +303,11 @@
return;
}
- sync->setPlaybackRate(rate);
+ status_t err = sync->setPlaybackRate(rate);
+ if (err != NO_ERROR) {
+ throwExceptionAsNecessary(env, err);
+ return;
+ }
}
static void android_media_MediaSync_native_finalize(JNIEnv *env, jobject thiz) {