@@ -101,11 +101,12 @@ namespace Freenect {
101101}
102102void setVideoFormat (freenect_video_format requested_format, freenect_resolution requested_resolution = FREENECT_RESOLUTION_MEDIUM) {
103103if (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 );
105105freenect_frame_mode mode = freenect_find_video_mode (requested_resolution, requested_format);
106106if (!mode.is_valid ) throw std::runtime_error (" Cannot set video format: invalid mode" );
107107if (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);
109110m_video_format = requested_format;
110111m_video_resolution = requested_resolution;
111112}
@@ -118,11 +119,12 @@ namespace Freenect {
118119}
119120void setDepthFormat (freenect_depth_format requested_format, freenect_resolution requested_resolution = FREENECT_RESOLUTION_MEDIUM) {
120121if (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 );
122123freenect_frame_mode mode = freenect_find_depth_mode (requested_resolution, requested_format);
123124if (!mode.is_valid ) throw std::runtime_error (" Cannot set depth format: invalid mode" );
124125if (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);
126128m_depth_format = requested_format;
127129m_depth_resolution = requested_resolution;
128130}
0 commit comments