diff --git a/src/libfreenect2.cpp b/src/libfreenect2.cpp index 122802f6e..a7eaf105a 100644 --- a/src/libfreenect2.cpp +++ b/src/libfreenect2.cpp @@ -735,7 +735,8 @@ bool Freenect2DeviceImpl::startStreams(bool enable_rgb, bool enable_depth) if (!command_tx_.execute(SetModeEnabledWith0x00640064Command(nextCommandSeq()), result)) return false; if (!command_tx_.execute(SetModeDisabledCommand(nextCommandSeq()), result)) return false; - for (uint32_t status = 0, last = 0; (status & 1) == 0; last = status) + int timeout = 50; // about 5 seconds (100ms x 50) + for (uint32_t status = 0, last = 0; (status & 1) == 0 && 0 < timeout; last = status, timeout--) { if (!command_tx_.execute(ReadStatus0x090000Command(nextCommandSeq()), result)) return false; status = Status0x090000Response(result).toNumber(); @@ -744,6 +745,9 @@ bool Freenect2DeviceImpl::startStreams(bool enable_rgb, bool enable_depth) if ((status & 1) == 0) this_thread::sleep_for(chrono::milliseconds(100)); } + if (timeout == 0) { + LOG_DEBUG << "status 0x090000: timeout"; + } if (!command_tx_.execute(InitStreamsCommand(nextCommandSeq()), result)) return false;