Merge lp:~fboucault/qtubuntu-camera/fix_rapid_switching_crash into lp:qtubuntu-camera

Proposed by Florian Boucault
Status: Merged
Approved by: Ugo Riboni
Approved revision: 139
Merged at revision: 139
Proposed branch: lp:~fboucault/qtubuntu-camera/fix_rapid_switching_crash
Merge into: lp:qtubuntu-camera
Diff against target: 46 lines (+11/-3)
3 files modified
src/aalcameraservice.cpp (+3/-1)
src/aalcamerazoomcontrol.cpp (+4/-0)
src/aalimageencodercontrol.cpp (+4/-2)
To merge this branch: bzr merge lp:~fboucault/qtubuntu-camera/fix_rapid_switching_crash
Reviewer Review Type Date Requested Status
Ugo Riboni (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+247838@code.launchpad.net

Commit message

Make sure we don't dereference invalid pointers during rapid connect/disconnect sequences.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Ugo Riboni (uriboni) wrote :

Code LGTM and testing shows it fixes the bug. Good to go.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/aalcameraservice.cpp'
2--- src/aalcameraservice.cpp 2014-07-30 19:35:51 +0000
3+++ src/aalcameraservice.cpp 2015-01-28 14:12:54 +0000
4@@ -178,7 +178,9 @@
5
6 void AalCameraService::disconnectCamera()
7 {
8- m_service->videoOutputControl()->stopPreview();
9+ if (m_service->videoOutputControl()) {
10+ m_service->videoOutputControl()->stopPreview();
11+ }
12
13 if (m_androidControl) {
14 android_camera_disconnect(m_androidControl);
15
16=== modified file 'src/aalcamerazoomcontrol.cpp'
17--- src/aalcamerazoomcontrol.cpp 2013-07-23 16:02:22 +0000
18+++ src/aalcamerazoomcontrol.cpp 2015-01-28 14:12:54 +0000
19@@ -91,6 +91,10 @@
20 {
21 Q_ASSERT(m_service->androidControl());
22
23+ if (!m_service->androidControl()) {
24+ return;
25+ }
26+
27 resetCurrentZoom();
28
29 int maxZoom = 1;
30
31=== modified file 'src/aalimageencodercontrol.cpp'
32--- src/aalimageencodercontrol.cpp 2014-12-08 17:13:31 +0000
33+++ src/aalimageencodercontrol.cpp 2015-01-28 14:12:54 +0000
34@@ -51,8 +51,10 @@
35 if (!settings.isNull()) {
36 // JPEG quality
37 m_encoderSettings.setQuality(settings.quality());
38- int jpegQuality = qtEncodingQualityToJpegQuality(settings.quality());
39- android_camera_set_jpeg_quality(m_service->androidControl(), jpegQuality);
40+ if (m_service->androidControl()) {
41+ int jpegQuality = qtEncodingQualityToJpegQuality(settings.quality());
42+ android_camera_set_jpeg_quality(m_service->androidControl(), jpegQuality);
43+ }
44
45 // codec
46 if (!settings.codec().isNull()) {

Subscribers

People subscribed via source and target branches