Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-01-02 17:08:26 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-01-02 17:08:26 +0300
commit72e2a0cfb6f8e4d21b33982bbd572f10c20e947c (patch)
treee850c2de5b3068be3b0822d27348b632c901ca41 /source/blender/python
parentd07bc44a96ce6838cd25edca61127021fbebe4d1 (diff)
Cleanup: py-gpu error checks
Move gpu initialization checks to the start of each function instead of mixing with argument parsing.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/gpu/gpu_py_api.c2
-rw-r--r--source/blender/python/gpu/gpu_py_api.h5
-rw-r--r--source/blender/python/gpu/gpu_py_batch.c5
-rw-r--r--source/blender/python/gpu/gpu_py_element.c5
-rw-r--r--source/blender/python/gpu/gpu_py_offscreen.c5
-rw-r--r--source/blender/python/gpu/gpu_py_shader.c11
6 files changed, 20 insertions, 13 deletions
diff --git a/source/blender/python/gpu/gpu_py_api.c b/source/blender/python/gpu/gpu_py_api.c
index f237561246a..7e999bdcc2d 100644
--- a/source/blender/python/gpu/gpu_py_api.c
+++ b/source/blender/python/gpu/gpu_py_api.c
@@ -49,7 +49,7 @@
/** \name Utils to invalidate functions
* \{ */
-bool bpygpu_is_initialized(void)
+bool bpygpu_is_initialized_or_error(void)
{
if (!GPU_is_initialized()) {
PyErr_SetString(
diff --git a/source/blender/python/gpu/gpu_py_api.h b/source/blender/python/gpu/gpu_py_api.h
index 2b4d8fa515c..af08881b723 100644
--- a/source/blender/python/gpu/gpu_py_api.h
+++ b/source/blender/python/gpu/gpu_py_api.h
@@ -25,10 +25,13 @@
#ifndef __GPU_PY_API_H__
#define __GPU_PY_API_H__
-bool bpygpu_is_initialized(void);
int bpygpu_ParsePrimType(PyObject *o, void *p);
PyObject *BPyInit_gpu(void);
+bool bpygpu_is_initialized_or_error(void);
+#define BPYGPU_IS_INIT_OR_ERROR_OBJ if (UNLIKELY(!bpygpu_is_initialized_or_error())) { return NULL; } ((void)0)
+#define BPYGPU_IS_INIT_OR_ERROR_INT if (UNLIKELY(!bpygpu_is_initialized_or_error())) { return -1; } ((void)0)
+
#endif /* __GPU_PY_API_H__ */
diff --git a/source/blender/python/gpu/gpu_py_batch.c b/source/blender/python/gpu/gpu_py_batch.c
index 93274e33cc4..a50ea32b5dd 100644
--- a/source/blender/python/gpu/gpu_py_batch.c
+++ b/source/blender/python/gpu/gpu_py_batch.c
@@ -75,6 +75,8 @@ static bool bpygpu_batch_is_program_or_error(BPyGPUBatch *self)
static PyObject *bpygpu_Batch_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject *kwds)
{
+ BPYGPU_IS_INIT_OR_ERROR_OBJ;
+
const char *exc_str_missing_arg = "GPUBatch.__new__() missing required argument '%s' (pos %d)";
struct {
@@ -85,8 +87,7 @@ static PyObject *bpygpu_Batch_new(PyTypeObject *UNUSED(type), PyObject *args, Py
static const char *_keywords[] = {"type", "buf", "elem", NULL};
static _PyArg_Parser _parser = {"|$O&O!O!:GPUBatch.__new__", _keywords, 0};
- if (!bpygpu_is_initialized() ||
- !_PyArg_ParseTupleAndKeywordsFast(
+ if (!_PyArg_ParseTupleAndKeywordsFast(
args, kwds, &_parser,
bpygpu_ParsePrimType, &params.type_id,
&BPyGPUVertBuf_Type, &params.py_vertbuf,
diff --git a/source/blender/python/gpu/gpu_py_element.c b/source/blender/python/gpu/gpu_py_element.c
index 592c761ffbc..2faf57ac55c 100644
--- a/source/blender/python/gpu/gpu_py_element.c
+++ b/source/blender/python/gpu/gpu_py_element.c
@@ -47,6 +47,8 @@
static PyObject *bpygpu_IndexBuf_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject *kwds)
{
+ BPYGPU_IS_INIT_OR_ERROR_OBJ;
+
const char *error_prefix = "IndexBuf.__new__";
bool ok = true;
@@ -61,8 +63,7 @@ static PyObject *bpygpu_IndexBuf_new(PyTypeObject *UNUSED(type), PyObject *args,
static const char *_keywords[] = {"type", "seq", NULL};
static _PyArg_Parser _parser = {"$O&O:IndexBuf.__new__", _keywords, 0};
- if (!bpygpu_is_initialized() ||
- !_PyArg_ParseTupleAndKeywordsFast(
+ if (!_PyArg_ParseTupleAndKeywordsFast(
args, kwds, &_parser,
bpygpu_ParsePrimType, &params.type_id,
&params.seq))
diff --git a/source/blender/python/gpu/gpu_py_offscreen.c b/source/blender/python/gpu/gpu_py_offscreen.c
index 3ce90c5d648..5dc6e36ca56 100644
--- a/source/blender/python/gpu/gpu_py_offscreen.c
+++ b/source/blender/python/gpu/gpu_py_offscreen.c
@@ -88,14 +88,15 @@ static int bpygpu_offscreen_valid_check(BPyGPUOffScreen *bpygpu_ofs)
static PyObject *bpygpu_offscreen_new(PyTypeObject *UNUSED(self), PyObject *args, PyObject *kwds)
{
+ BPYGPU_IS_INIT_OR_ERROR_OBJ;
+
GPUOffScreen *ofs;
int width, height, samples = 0;
char err_out[256];
static const char *_keywords[] = {"width", "height", "samples", NULL};
static _PyArg_Parser _parser = {"ii|i:GPUOffScreen.__new__", _keywords, 0};
- if (!bpygpu_is_initialized() ||
- !_PyArg_ParseTupleAndKeywordsFast(
+ if (!_PyArg_ParseTupleAndKeywordsFast(
args, kwds, &_parser,
&width, &height, &samples))
{
diff --git a/source/blender/python/gpu/gpu_py_shader.c b/source/blender/python/gpu/gpu_py_shader.c
index 59a416a0c3a..52fe6f2d912 100644
--- a/source/blender/python/gpu/gpu_py_shader.c
+++ b/source/blender/python/gpu/gpu_py_shader.c
@@ -105,6 +105,8 @@ static int bpygpu_uniform_location_get(GPUShader *shader, const char *name, cons
static PyObject *bpygpu_shader_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject *kwds)
{
+ BPYGPU_IS_INIT_OR_ERROR_OBJ;
+
struct {
const char *vertexcode;
const char *fragcode;
@@ -118,8 +120,7 @@ static PyObject *bpygpu_shader_new(PyTypeObject *UNUSED(type), PyObject *args, P
"libcode", "defines", NULL};
static _PyArg_Parser _parser = {"ss|$sss:GPUShader.__new__", _keywords, 0};
- if (!bpygpu_is_initialized() ||
- !_PyArg_ParseTupleAndKeywordsFast(
+ if (!_PyArg_ParseTupleAndKeywordsFast(
args, kwds, &_parser,
&params.vertexcode, &params.fragcode, &params.geocode,
&params.libcode, &params.defines))
@@ -717,11 +718,11 @@ PyDoc_STRVAR(bpygpu_shader_from_builtin_doc,
);
static PyObject *bpygpu_shader_from_builtin(PyObject *UNUSED(self), PyObject *arg)
{
+ BPYGPU_IS_INIT_OR_ERROR_OBJ;
+
GPUBuiltinShader shader_id;
- if (!bpygpu_is_initialized() ||
- !bpygpu_ParseBultinShaderEnum(arg, &shader_id))
- {
+ if (!bpygpu_ParseBultinShaderEnum(arg, &shader_id)) {
return NULL;
}