src/driver.cpp
branchNewGRF_ports
changeset 10991 d8811e327d12
parent 10724 68a692eacf22
child 10994 cd9968b6f96b
equal deleted inserted replaced
10731:67db0d431d5e 10991:d8811e327d12
    85 
    85 
    86 				DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err);
    86 				DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err);
    87 				delete newd;
    87 				delete newd;
    88 			}
    88 			}
    89 		}
    89 		}
    90 		error("Couldn't find any suitable %s driver", GetDriverTypeName(type));
    90 		usererror("Couldn't find any suitable %s driver", GetDriverTypeName(type));
    91 	} else {
    91 	} else {
    92 		char *parm;
    92 		char *parm;
    93 		char buffer[256];
    93 		char buffer[256];
    94 		const char *parms[32];
    94 		const char *parms[32];
    95 
    95 
   123 			Driver *newd = d->CreateInstance();
   123 			Driver *newd = d->CreateInstance();
   124 
   124 
   125 			const char *err = newd->Start(parms);
   125 			const char *err = newd->Start(parms);
   126 			if (err != NULL) {
   126 			if (err != NULL) {
   127 				delete newd;
   127 				delete newd;
   128 				error("Unable to load driver '%s'. The error was: %s", d->name, err);
   128 				usererror("Unable to load driver '%s'. The error was: %s", d->name, err);
   129 			}
   129 			}
   130 
   130 
   131 			DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name);
   131 			DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name);
   132 			delete *GetActiveDriver(type);
   132 			delete *GetActiveDriver(type);
   133 			*GetActiveDriver(type) = newd;
   133 			*GetActiveDriver(type) = newd;
   134 			return newd;
   134 			return newd;
   135 		}
   135 		}
   136 		error("No such %s driver: %s\n", GetDriverTypeName(type), buffer);
   136 		usererror("No such %s driver: %s\n", GetDriverTypeName(type), buffer);
   137 	}
   137 	}
   138 }
   138 }
   139 
   139 
   140 /**
   140 /**
   141  * Register a driver internally, based on its name.
   141  * Register a driver internally, based on its name.
   154 	/* Prefix the name with driver type to make it unique */
   154 	/* Prefix the name with driver type to make it unique */
   155 	char buf[32];
   155 	char buf[32];
   156 	strecpy(buf, GetDriverTypeName(type), lastof(buf));
   156 	strecpy(buf, GetDriverTypeName(type), lastof(buf));
   157 	strecpy(buf + 5, name, lastof(buf));
   157 	strecpy(buf + 5, name, lastof(buf));
   158 
   158 
   159 #if !defined(NDEBUG) || defined(WITH_ASSERT)
   159 	std::pair<Drivers::iterator, bool> P = GetDrivers().insert(Drivers::value_type(buf, this));
   160 	/* NDEBUG disables asserts and gives a warning: unused variable 'P' */
       
   161 	std::pair<Drivers::iterator, bool> P =
       
   162 #endif /* !NDEBUG */
       
   163 	GetDrivers().insert(Drivers::value_type(buf, this));
       
   164 	assert(P.second);
   160 	assert(P.second);
   165 }
   161 }
   166 
   162 
   167 /**
   163 /**
   168  * Build a human readable list of available drivers, grouped by type.
   164  * Build a human readable list of available drivers, grouped by type.