summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@digia.com>2014-03-20 00:38:11 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-27 16:44:20 +0100
commit4ba7b223909d69fc443f1d536e0a884518227d0c (patch)
treee978818919ceda76e32fd24f7f7dbf72d637ad86
parentcc41c7df3ca3daf3fe7e9ef3e1d74ca96724d821 (diff)
Android: Fix MetadataRetriver wrapper
The QJNIObject was never intended to be used as a base class. Change-Id: Ic4effd5e1c89a08515c756bd5092fb1e1eead688 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.cpp7
-rw-r--r--src/plugins/android/src/wrappers/jmediametadataretriever.cpp41
-rw-r--r--src/plugins/android/src/wrappers/jmediametadataretriever.h4
3 files changed, 29 insertions, 23 deletions
diff --git a/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.cpp
index b6ef6c4bc..dcc3dfbe0 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.cpp
+++ b/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.cpp
@@ -74,13 +74,8 @@ static const char* qt_ID3GenreNames[] =
QAndroidMetaDataReaderControl::QAndroidMetaDataReaderControl(QObject *parent)
: QMetaDataReaderControl(parent)
, m_available(false)
- , m_retriever(0)
+ , m_retriever(new JMediaMetadataRetriever)
{
- m_retriever = new JMediaMetadataRetriever;
- if (!m_retriever->isValid()) {
- delete m_retriever;
- m_retriever = 0;
- }
}
QAndroidMetaDataReaderControl::~QAndroidMetaDataReaderControl()
diff --git a/src/plugins/android/src/wrappers/jmediametadataretriever.cpp b/src/plugins/android/src/wrappers/jmediametadataretriever.cpp
index 91c40905c..93b77ecb1 100644
--- a/src/plugins/android/src/wrappers/jmediametadataretriever.cpp
+++ b/src/plugins/android/src/wrappers/jmediametadataretriever.cpp
@@ -47,8 +47,8 @@
QT_BEGIN_NAMESPACE
JMediaMetadataRetriever::JMediaMetadataRetriever()
- : QJNIObjectPrivate("android/media/MediaMetadataRetriever")
{
+ m_metadataRetriever = QJNIObjectPrivate("android/media/MediaMetadataRetriever");
}
JMediaMetadataRetriever::~JMediaMetadataRetriever()
@@ -59,9 +59,9 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
{
QString value;
- QJNIObjectPrivate metadata = callObjectMethod("extractMetadata",
- "(I)Ljava/lang/String;",
- jint(key));
+ QJNIObjectPrivate metadata = m_metadataRetriever.callObjectMethod("extractMetadata",
+ "(I)Ljava/lang/String;",
+ jint(key));
if (metadata.isValid())
value = metadata.toString();
@@ -70,28 +70,34 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
void JMediaMetadataRetriever::release()
{
- callMethod<void>("release");
+ if (!m_metadataRetriever.isValid())
+ return;
+
+ m_metadataRetriever.callMethod<void>("release");
}
bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
{
+ if (!m_metadataRetriever.isValid())
+ return false;
+
QJNIEnvironmentPrivate env;
bool loaded = false;
QJNIObjectPrivate string = QJNIObjectPrivate::fromString(url.toString());
- QJNIObjectPrivate uri = callStaticObjectMethod("android/net/Uri",
- "parse",
- "(Ljava/lang/String;)Landroid/net/Uri;",
- string.object());
+ QJNIObjectPrivate uri = m_metadataRetriever.callStaticObjectMethod("android/net/Uri",
+ "parse",
+ "(Ljava/lang/String;)Landroid/net/Uri;",
+ string.object());
if (env->ExceptionCheck()) {
env->ExceptionClear();
} else {
- callMethod<void>("setDataSource",
- "(Landroid/content/Context;Landroid/net/Uri;)V",
- QtAndroidPrivate::activity(),
- uri.object());
+ m_metadataRetriever.callMethod<void>("setDataSource",
+ "(Landroid/content/Context;Landroid/net/Uri;)V",
+ QtAndroidPrivate::activity(),
+ uri.object());
if (env->ExceptionCheck())
env->ExceptionClear();
else
@@ -103,13 +109,16 @@ bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
bool JMediaMetadataRetriever::setDataSource(const QString &path)
{
+ if (!m_metadataRetriever.isValid())
+ return false;
+
QJNIEnvironmentPrivate env;
bool loaded = false;
- callMethod<void>("setDataSource",
- "(Ljava/lang/String;)V",
- QJNIObjectPrivate::fromString(path).object());
+ m_metadataRetriever.callMethod<void>("setDataSource",
+ "(Ljava/lang/String;)V",
+ QJNIObjectPrivate::fromString(path).object());
if (env->ExceptionCheck())
env->ExceptionClear();
else
diff --git a/src/plugins/android/src/wrappers/jmediametadataretriever.h b/src/plugins/android/src/wrappers/jmediametadataretriever.h
index 7b22c955d..7b0340c0d 100644
--- a/src/plugins/android/src/wrappers/jmediametadataretriever.h
+++ b/src/plugins/android/src/wrappers/jmediametadataretriever.h
@@ -47,7 +47,7 @@
QT_BEGIN_NAMESPACE
-class JMediaMetadataRetriever : public QJNIObjectPrivate
+class JMediaMetadataRetriever
{
public:
enum MetadataKey {
@@ -84,6 +84,8 @@ public:
bool setDataSource(const QUrl &url);
bool setDataSource(const QString &path);
+private:
+ QJNIObjectPrivate m_metadataRetriever;
};
QT_END_NAMESPACE