Esempio n. 1
0
int CalDevice::getNumDevices()
{
    if (!CalInitObject::check()) return 0;
    CALuint numDevices = 0;

    if (calDeviceGetCount(&numDevices) != CAL_RESULT_OK) return 0;

    return (int)numDevices;
}
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;
}