Raise exception on too big textures
This commit is contained in:
parent
31c007b541
commit
f81e20cc68
|
@ -53,6 +53,7 @@ struct
|
|||
const char *name;
|
||||
} static customExc[] =
|
||||
{
|
||||
{ MKXP, "MKXPError" },
|
||||
{ RGSS, "RGSSError" },
|
||||
{ PHYSFS, "PHYSFSError" },
|
||||
{ SDL, "SDLError" }
|
||||
|
@ -85,7 +86,8 @@ static const RbException excToRbExc[] =
|
|||
ArgumentError,
|
||||
|
||||
PHYSFS, /* PHYSFSError */
|
||||
SDL /* SDLError */
|
||||
SDL, /* SDLError */
|
||||
MKXP /* MKXPError */
|
||||
};
|
||||
|
||||
void raiseRbExc(const Exception &exc)
|
||||
|
|
|
@ -31,6 +31,7 @@ enum RbException
|
|||
RGSS = 0,
|
||||
PHYSFS,
|
||||
SDL,
|
||||
MKXP,
|
||||
|
||||
ErrnoENOENT,
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ RB_METHOD(bitmapInitialize)
|
|||
int width, height;
|
||||
rb_get_args(argc, argv, "ii", &width, &height);
|
||||
|
||||
b = new Bitmap(width, height);
|
||||
GUARD_EXC( b = new Bitmap(width, height); )
|
||||
}
|
||||
|
||||
setPrivateData(self, b, BitmapType);
|
||||
|
|
|
@ -66,6 +66,7 @@ static const MrbExcData excData[] =
|
|||
{ RGSS, "RGSSError" },
|
||||
{ PHYSFS, "PHYSFSError" },
|
||||
{ SDL, "SDLError" },
|
||||
{ MKXP, "MKXPError" },
|
||||
{ IO, "IOError" }
|
||||
};
|
||||
|
||||
|
@ -117,21 +118,6 @@ MrbData::MrbData(mrb_state *mrb)
|
|||
mrb_gc_arena_restore(mrb, arena);
|
||||
}
|
||||
|
||||
//enum Type
|
||||
//{
|
||||
// RGSSError,
|
||||
// NoFileError,
|
||||
// IOError,
|
||||
|
||||
// /* Already defined by ruby */
|
||||
// TypeError,
|
||||
// ArgumentError,
|
||||
|
||||
// /* New types introduced in mkxp */
|
||||
// PHYSFSError,
|
||||
// SDLError
|
||||
//};
|
||||
|
||||
/* Indexed with Exception::Type */
|
||||
static const MrbException excToMrbExc[] =
|
||||
{
|
||||
|
@ -144,6 +130,7 @@ static const MrbException excToMrbExc[] =
|
|||
|
||||
PHYSFS, /* PHYSFSError */
|
||||
SDL, /* SDLError */
|
||||
MKXP /* MKXPError */
|
||||
};
|
||||
|
||||
void raiseMrbExc(mrb_state *mrb, const Exception &exc)
|
||||
|
|
|
@ -64,6 +64,7 @@ enum MrbException
|
|||
RGSS,
|
||||
PHYSFS,
|
||||
SDL,
|
||||
MKXP,
|
||||
|
||||
ErrnoE2BIG,
|
||||
ErrnoEACCES,
|
||||
|
|
|
@ -48,7 +48,7 @@ MRB_METHOD(bitmapInitialize)
|
|||
mrb_int width, height;
|
||||
mrb_get_args(mrb, "ii", &width, &height);
|
||||
|
||||
b = new Bitmap(width, height);
|
||||
GUARD_EXC( b = new Bitmap(width, height); )
|
||||
}
|
||||
|
||||
setPrivateData(mrb, self, b, BitmapType);
|
||||
|
|
|
@ -20,6 +20,9 @@
|
|||
*/
|
||||
|
||||
#include "texpool.h"
|
||||
#include "exception.h"
|
||||
#include "globalstate.h"
|
||||
#include "glstate.h"
|
||||
|
||||
#include <QHash>
|
||||
#include <QQueue>
|
||||
|
@ -121,7 +124,11 @@ TexFBO TexPool::request(int width, int height)
|
|||
return cobj.obj;
|
||||
}
|
||||
|
||||
// FIXME check here that requested dimensions don't exceed OpenGL limits
|
||||
int maxSize = glState.caps.maxTexSize;
|
||||
if (width > maxSize || height > maxSize)
|
||||
throw Exception(Exception::MKXPError,
|
||||
"Texture dimensions [%s, %s] exceed hardware capabilities",
|
||||
QByteArray::number(width), QByteArray::number(height));
|
||||
|
||||
/* Nope, create it instead */
|
||||
TexFBO::init(cobj.obj);
|
||||
|
|
Loading…
Reference in New Issue