@@ -69,7 +69,7 @@ namespace FreenectDriver
6969 switch (sensorType)
7070 {
7171 default :
72- LogError (" Cannot create a stream of type " + sensorType);
72+ LogError (" Cannot create a stream of type " + to_string ( sensorType) );
7373 return NULL ;
7474 case ONI_SENSOR_COLOR:
7575 Freenect::FreenectDevice::startVideo ();
@@ -232,7 +232,10 @@ namespace FreenectDriver
232232 DriverBase::initialize (connectedCallback, disconnectedCallback, deviceStateChangedCallback, pCookie);
233233 for (int i = 0 ; i < Freenect::deviceCount (); i++)
234234 {
235- std::string uri = " freenect://" + i;
235+ std::string uri = " freenect://" + to_string (i);
236+
237+ WriteMessage (" Found device " + uri);
238+
236239 OniDeviceInfo info;
237240 strncpy (info.uri , uri.c_str (), ONI_MAX_STR);
238241 strncpy (info.vendor , " Microsoft" , ONI_MAX_STR);
@@ -256,6 +259,8 @@ namespace FreenectDriver
256259 }
257260 else
258261 {
262+ WriteMessage (" Opening device " + std::string (uri));
263+
259264 unsigned int id;
260265 std::istringstream is (iter->first .uri );
261266 is.seekg (strlen (" freenect://" ));
@@ -267,23 +272,30 @@ namespace FreenectDriver
267272 }
268273 }
269274
270- LogError (" Could not find device " + * uri);
275+ LogError (" Could not find device " + std::string ( uri) );
271276 return NULL ;
272277 }
273278
274279 void deviceClose (oni::driver::DeviceBase* pDevice)
275280 {
276- for (std::map<OniDeviceInfo, oni::driver::DeviceBase*>::iterator iter = devices.begin (); iter != devices.end (); iter++ )
281+ for (std::map<OniDeviceInfo, oni::driver::DeviceBase*>::iterator iter = devices.begin (); iter != devices.end ();)
277282 {
278- if (iter->second == pDevice) {
279- iter->second = NULL ;
283+ if (iter->second == pDevice)
284+ {
285+ WriteMessage (" Closing device " + std::string (iter->first .uri ));
286+
280287 unsigned int id;
281- std::istringstream is (iter->first .uri );
288+ std::istringstream is (std::string ( iter->first .uri ) );
282289 is.seekg (strlen (" freenect://" ));
283290 is >> id;
291+ devices.erase (iter++);
284292 deleteDevice (id);
285293 return ;
286294 }
295+ else
296+ {
297+ iter++;
298+ }
287299 }
288300
289301 LogError (" Could not close unrecognized device" );
0 commit comments