video::E_DRIVER_TYPE
scm_to_driver_type (SCM driver_type)
{
- char* driverType = scm_to_utf8_string (scm_symbol_to_string (driver_type));
- if (!strcmp (driverType, "null"))
+ char* type_name = scm_to_utf8_string (scm_symbol_to_string (driver_type));
+ video::E_DRIVER_TYPE type;
+
+ if (!strcmp (type_name, "null"))
{
- return video::EDT_NULL;
+ type = video::EDT_NULL;
}
- else if (!strcmp (driverType, "software"))
+ else if (!strcmp (type_name, "software"))
{
- return video::EDT_SOFTWARE;
+ type = video::EDT_SOFTWARE;
}
- else if (!strcmp (driverType, "burnings"))
+ else if (!strcmp (type_name, "burnings"))
{
- return video::EDT_BURNINGSVIDEO;
+ type = video::EDT_BURNINGSVIDEO;
}
- else if (!strcmp (driverType, "direct3d8"))
+ else if (!strcmp (type_name, "direct3d8"))
{
- return video::EDT_DIRECT3D8;
+ type = video::EDT_DIRECT3D8;
}
- else if (!strcmp (driverType, "direct3d9"))
+ else if (!strcmp (type_name, "direct3d9"))
{
- return video::EDT_DIRECT3D9;
+ type = video::EDT_DIRECT3D9;
}
- else if (!strcmp (driverType, "opengl"))
+ else if (!strcmp (type_name, "opengl"))
{
- return video::EDT_OPENGL;
+ type = video::EDT_OPENGL;
}
else
{
scm_error (scm_arg_type_key, NULL, "Wrong driver type: ~S",
scm_list_1 (driver_type), scm_list_1 (driver_type));
}
+
+ free (type_name);
+ return type;
}