XnStatus XnDeviceFile::Init(const XnDeviceConfig* pDeviceConfig) { XnStatus nRetVal = XN_STATUS_OK; XN_VALIDATE_INPUT_PTR(pDeviceConfig); XnDeviceBase* pActualDeviceFile = NULL; switch (pDeviceConfig->DeviceMode) { case XN_DEVICE_MODE_READ: XN_VALIDATE_NEW(pActualDeviceFile, XnDeviceFileReader); break; case XN_DEVICE_MODE_WRITE: XN_VALIDATE_NEW(pActualDeviceFile, XnDeviceFileWriter); break; default: return XN_STATUS_IO_DEVICE_INVALID_MODE; } // init actual device nRetVal = pActualDeviceFile->Init(pDeviceConfig); XN_IS_STATUS_OK(nRetVal); ReplaceActualDevice(pActualDeviceFile); return (XN_STATUS_OK); }
XnStatus XnDeviceSensor::Init(const XnDeviceConfig* pDeviceConfig) { XnStatus nRetVal = XN_STATUS_OK; XN_VALIDATE_INPUT_PTR(pDeviceConfig); XnDeviceBase* pActualDevice = NULL; switch (pDeviceConfig->SharingMode) { case XN_DEVICE_EXCLUSIVE: XN_VALIDATE_NEW(pActualDevice, XnSensor); break; case XN_DEVICE_SHARED: #if (XN_PLATFORM != XN_PLATFORM_WIN32) XN_LOG_WARNING_RETURN(XN_STATUS_IO_DEVICE_INVALID_SHARING, XN_MASK_DEVICE_SENSOR, "Sensor sharing is only supported under win32!"); #endif XN_VALIDATE_NEW(pActualDevice, XnSensorClient); break; default: return XN_STATUS_IO_DEVICE_INVALID_SHARING; } // init actual device nRetVal = pActualDevice->Init(pDeviceConfig); XN_IS_STATUS_OK(nRetVal); ReplaceActualDevice(pActualDevice); return (XN_STATUS_OK); }
XnStatus XnDeviceFile::Destroy() { XnStatus nRetVal = XN_STATUS_OK; // destroy actual nRetVal = XnDeviceBaseProxy::Destroy(); XN_IS_STATUS_OK(nRetVal); ReplaceActualDevice(NULL); return (XN_STATUS_OK); }
XnStatus XnDeviceSensor::Destroy() { XnStatus nRetVal = XN_STATUS_OK; // destroy actual nRetVal = XnDeviceBaseProxy::Destroy(); XN_IS_STATUS_OK(nRetVal); IXnDevice* pActual = GetActual(); ReplaceActualDevice(NULL); XN_DELETE(pActual); return (XN_STATUS_OK); }