Ejemplo n.º 1
0
        public bool sfxAutodetect()
        {
            // Get all the available devices.
            string devices = Util.sfxGetAvailableDevices();
            // Collect and sort the devices by preferentiality.


            int count = Util.getRecordCount(devices);


            coArrayObject deviceTrySequence = new Torque_Class_Helper("ArrayObject").Create().AsString();


            for (int i = 0; i < count; i++)
            {
                string info     = Util.getRecord(devices, i);
                string provider = Util.getField(info, 0);
                deviceTrySequence.push_back(provider, info);
            }
            deviceTrySequence.sortfk("sfxCompareProvider");
            // Try the devices in order.

            count = deviceTrySequence.count();
            for (int i = 0; i < count; i++)
            {
                string provider = deviceTrySequence.getKey(i);
                string info     = deviceTrySequence.getValue(i);
                sGlobal["$pref::SFX::provider"]    = provider;
                sGlobal["$pref::SFX::device"]      = Util.getField(info, 1);
                sGlobal["$pref::SFX::useHardware"] = Util.getField(info, 2);
                // By default we've decided to avoid hardware devices as
                // they are buggy and prone to problems.
                bGlobal["$pref::SFX::useHardware"] = false;
                if (!sfxInit())
                {
                    continue;
                }
                bGlobal["$pref::SFX::autoDetect"] = false;
                deviceTrySequence.delete();
                return(true);
            }
            // Found no suitable device.
            console.error("sfxAutodetect - Could not initialize a valid SFX device.");
            sGlobal["$pref::SFX::provider"]    = "";
            sGlobal["$pref::SFX::device"]      = "";
            sGlobal["$pref::SFX::useHardware"] = "";
            deviceTrySequence.delete();
            return(false);
        }