mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r26215) -Codechange: rework code so one can test if a blitter factory exists before attempting trying to instantiate an instance
This commit is contained in:
parent
793dc27096
commit
bf4ea2594a
@ -94,6 +94,24 @@ public:
|
|||||||
* @post Sets the blitter so GetCurrentBlitter() returns it too.
|
* @post Sets the blitter so GetCurrentBlitter() returns it too.
|
||||||
*/
|
*/
|
||||||
static Blitter *SelectBlitter(const char *name)
|
static Blitter *SelectBlitter(const char *name)
|
||||||
|
{
|
||||||
|
BlitterFactory *b = GetBlitterFactory(name);
|
||||||
|
if (b == NULL) return NULL;
|
||||||
|
|
||||||
|
Blitter *newb = b->CreateInstance();
|
||||||
|
delete *GetActiveBlitter();
|
||||||
|
*GetActiveBlitter() = newb;
|
||||||
|
|
||||||
|
DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", newb->GetName());
|
||||||
|
return newb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the blitter factory with the given name.
|
||||||
|
* @param name the blitter factory to select.
|
||||||
|
* @return The blitter factory, or NULL when there isn't one with the wanted name.
|
||||||
|
*/
|
||||||
|
static BlitterFactory *GetBlitterFactory(const char *name)
|
||||||
{
|
{
|
||||||
#if defined(DEDICATED)
|
#if defined(DEDICATED)
|
||||||
const char *default_blitter = "null";
|
const char *default_blitter = "null";
|
||||||
@ -117,12 +135,7 @@ public:
|
|||||||
for (; it != GetBlitters().end(); it++) {
|
for (; it != GetBlitters().end(); it++) {
|
||||||
BlitterFactory *b = (*it).second;
|
BlitterFactory *b = (*it).second;
|
||||||
if (strcasecmp(bname, b->name) == 0) {
|
if (strcasecmp(bname, b->name) == 0) {
|
||||||
Blitter *newb = b->CreateInstance();
|
return b;
|
||||||
delete *GetActiveBlitter();
|
|
||||||
*GetActiveBlitter() = newb;
|
|
||||||
|
|
||||||
DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", bname);
|
|
||||||
return newb;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user