@@ -101,11 +101,12 @@ namespace Freenect {
101
101
}
102
102
void setVideoFormat (freenect_video_format requested_format, freenect_resolution requested_resolution = FREENECT_RESOLUTION_MEDIUM) {
103
103
if (requested_format != m_video_format || requested_resolution != m_video_resolution) {
104
- freenect_stop_video (m_dev);
104
+ bool wasRunning = ( freenect_stop_video (m_dev) >= 0 );
105
105
freenect_frame_mode mode = freenect_find_video_mode (requested_resolution, requested_format);
106
106
if (!mode.is_valid ) throw std::runtime_error (" Cannot set video format: invalid mode" );
107
107
if (freenect_set_video_mode (m_dev, mode) < 0 ) throw std::runtime_error (" Cannot set video format" );
108
- freenect_start_video (m_dev);
108
+ if (wasRunning)
109
+ freenect_start_video (m_dev);
109
110
m_video_format = requested_format;
110
111
m_video_resolution = requested_resolution;
111
112
}
@@ -118,11 +119,12 @@ namespace Freenect {
118
119
}
119
120
void setDepthFormat (freenect_depth_format requested_format, freenect_resolution requested_resolution = FREENECT_RESOLUTION_MEDIUM) {
120
121
if (requested_format != m_depth_format || requested_resolution != m_depth_resolution) {
121
- freenect_stop_depth (m_dev);
122
+ bool wasRunning = ( freenect_stop_depth (m_dev) >= 0 );
122
123
freenect_frame_mode mode = freenect_find_depth_mode (requested_resolution, requested_format);
123
124
if (!mode.is_valid ) throw std::runtime_error (" Cannot set depth format: invalid mode" );
124
125
if (freenect_set_depth_mode (m_dev, mode) < 0 ) throw std::runtime_error (" Cannot set depth format" );
125
- freenect_start_depth (m_dev);
126
+ if (wasRunning)
127
+ freenect_start_depth (m_dev);
126
128
m_depth_format = requested_format;
127
129
m_depth_resolution = requested_resolution;
128
130
}
0 commit comments