CalDevice* CalDevice::createDevice(int num) { if (!CalInitObject::check()) return 0; CalDevice* pDev = new CalDevice(num); if(calDeviceOpen(&pDev->mDevice, num) != CAL_RESULT_OK) { /* Opening device failed */ delete pDev; pDev = NULL; return pDev; } if (calCtxCreate( &pDev->mCtx, pDev->mDevice ) != CAL_RESULT_OK) { delete pDev; pDev = NULL; return pDev; } pDev->mHasContext = true; /* Retrieve info and attribs of the opened device */ calDeviceGetInfo(&pDev->mInfo, num); pDev->mAttribs.struct_size = sizeof(CALdeviceattribs); if (calDeviceGetAttribs(&pDev->mAttribs, num)!= CAL_RESULT_OK) { fprintf(stderr, "ERROR: Could not query device attributes.\n"); } return pDev; }
static CALresult mwGetDevice(MWCALInfo* ci, CALuint devID) { CALresult err; err = calDeviceGetCount(&ci->numDevices); if (err != CAL_RESULT_OK) { cal_warn("Failed to get CAL device count", err); return err; } if (ci->numDevices == 0) { warn("Didn't find any CAL devices\n"); return CAL_RESULT_ERROR; } if (devID + 1 > ci->numDevices) { warn("Requested device ID %u > found number of devices (%u)\n", devID, ci->numDevices); return CAL_RESULT_ERROR; } ci->devID = devID; err = calDeviceOpen(&ci->dev, ci->devID); if (err != CAL_RESULT_OK) { cal_warn("Failed to open CAL device", err); return err; } err = calDeviceGetInfo(&ci->devInfo, ci->devID); if (err != CAL_RESULT_OK) { cal_warn("Failed to get CAL device information", err); return err; } ci->devAttribs.struct_size = sizeof(struct CALdeviceattribsRec); err = calDeviceGetAttribs(&ci->devAttribs, ci->devID); if (err != CAL_RESULT_OK) { cal_warn("Failed to get CAL device attributes", err); return err; } return CAL_RESULT_OK; }