OniStatus XnOniStream::setProperty(int propertyId, const void* data, int dataSize) { xnl::AutoCSLocker locker(*m_pDeviceStream->GetOpenLock()); // if this stream is open, and not just by me (multiple depth streams for example), don't allow any changes XnUInt32 myOpenRefCount = m_started ? 1 : 0; if (m_pDeviceStream->GetOpenRefCount() > myOpenRefCount) { return ONI_STATUS_OUT_OF_FLOW; } else { XnStatus nRetVal = SetPropertyImpl(propertyId, data, dataSize); switch(nRetVal) { case XN_STATUS_OK: return ONI_STATUS_OK; case XN_STATUS_DEVICE_PROPERTY_BAD_TYPE: return ONI_STATUS_BAD_PARAMETER; case XN_STATUS_BAD_PARAM: case XN_STATUS_DEVICE_BAD_PARAM: default: return ONI_STATUS_NOT_SUPPORTED; } } }
OniStatus XnOniStream::setProperty(int propertyId, const void* data, int dataSize) { xnl::AutoCSLocker locker(*m_pDeviceStream->GetOpenLock()); // if this stream is open, and not just by me (multiple depth streams for example), don't allow any changes XnUInt32 myOpenRefCount = m_started ? 1 : 0; if (m_pDeviceStream->GetOpenRefCount() > myOpenRefCount) { return ONI_STATUS_OUT_OF_FLOW; } else { XnStatus nRetVal; if(propertyId == ONI_STREAM_PROPERTY_SOFT_VIDEO_MODE) nRetVal = XnSensor::SetSoftVideoMode((OniVideoMode*)data); else nRetVal = SetPropertyImpl(propertyId, data, dataSize); // If the VideoMode was set, update XnSensor::VideoMode accordingly if(propertyId == ONI_STREAM_PROPERTY_VIDEO_MODE && nRetVal == XN_STATUS_OK) { XnSensor::SetVideoMode((OniVideoMode*)data); } switch(nRetVal) { case XN_STATUS_OK: return ONI_STATUS_OK; case XN_STATUS_DEVICE_PROPERTY_BAD_TYPE: return ONI_STATUS_BAD_PARAMETER; case XN_STATUS_BAD_PARAM: case XN_STATUS_DEVICE_BAD_PARAM: default: return ONI_STATUS_NOT_SUPPORTED; } } }