summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimediakit/qmediarecorder.cpp7
-rw-r--r--tests/auto/qmediarecorder/tst_qmediarecorder.cpp20
-rwxr-xr-xtests/auto/qmediarecorder/tst_qmediarecorder.h1
3 files changed, 27 insertions, 1 deletions
diff --git a/src/multimediakit/qmediarecorder.cpp b/src/multimediakit/qmediarecorder.cpp
index 1c08e28a5..2584359ef 100644
--- a/src/multimediakit/qmediarecorder.cpp
+++ b/src/multimediakit/qmediarecorder.cpp
@@ -168,7 +168,12 @@ void QMediaRecorderPrivate::_q_error(int error, const QString &errorString)
void QMediaRecorderPrivate::_q_serviceDestroyed()
{
- q_func()->setMediaObject(0);
+ mediaObject = 0;
+ control = 0;
+ formatControl = 0;
+ audioControl = 0;
+ videoControl = 0;
+ metaDataControl = 0;
}
void QMediaRecorderPrivate::_q_notify()
diff --git a/tests/auto/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/qmediarecorder/tst_qmediarecorder.cpp
index 6805a2680..4f46f54f5 100644
--- a/tests/auto/qmediarecorder/tst_qmediarecorder.cpp
+++ b/tests/auto/qmediarecorder/tst_qmediarecorder.cpp
@@ -165,6 +165,26 @@ void tst_QMediaRecorder::testNullControls()
QCOMPARE(spy.count(), 0);
}
+void tst_QMediaRecorder::testDeleteMediaObject()
+{
+ MockMediaRecorderControl *mock = new MockMediaRecorderControl(this);
+ MockMediaRecorderService *service = new MockMediaRecorderService(this, mock);
+ MockMediaObject *object = new MockMediaObject(this, service);
+ QMediaRecorder *capture = new QMediaRecorder(object);
+
+ QVERIFY(capture->mediaObject() == object);
+ QVERIFY(capture->isAvailable());
+
+ delete object;
+ delete service;
+ delete mock;
+
+ QVERIFY(capture->mediaObject() == 0);
+ QVERIFY(!capture->isAvailable());
+
+ delete capture;
+}
+
void tst_QMediaRecorder::testError()
{
const QString errorString(QLatin1String("format error"));
diff --git a/tests/auto/qmediarecorder/tst_qmediarecorder.h b/tests/auto/qmediarecorder/tst_qmediarecorder.h
index 253a750e6..d0202a0c0 100755
--- a/tests/auto/qmediarecorder/tst_qmediarecorder.h
+++ b/tests/auto/qmediarecorder/tst_qmediarecorder.h
@@ -70,6 +70,7 @@ public slots:
private slots:
void testNullService();
void testNullControls();
+ void testDeleteMediaObject();
void testError();
void testSink();
void testRecord();