[Bf-blender-cvs] [c61b5b9] framebuffer: From review: pass scene, view3d and region as arguments

Dalai Felinto noreply at git.blender.org
Mon Oct 19 15:38:18 CEST 2015


Commit: c61b5b949de99fce583b07a8171895586873c1f9
Author: Dalai Felinto
Date:   Mon Oct 19 11:17:00 2015 -0200
Branches: framebuffer
https://developer.blender.org/rBc61b5b949de99fce583b07a8171895586873c1f9

>From review: pass scene, view3d and region as arguments

===================================================================

M	source/blender/python/intern/gpu_offscreen.c

===================================================================

diff --git a/source/blender/python/intern/gpu_offscreen.c b/source/blender/python/intern/gpu_offscreen.c
index 3da7f72..19f257f 100644
--- a/source/blender/python/intern/gpu_offscreen.c
+++ b/source/blender/python/intern/gpu_offscreen.c
@@ -43,8 +43,6 @@
 
 #include "BLI_utildefines.h"
 
-#include "BKE_context.h"
-
 #include "WM_types.h"
 
 #include "ED_screen.h"
@@ -216,39 +214,49 @@ static PyObject *pygpu_offscreen_draw_view3d(PyGPUOffScreen *self, PyObject *arg
 {
 	MatrixObject *PyModelViewMatrix;
 	MatrixObject *PyProjectionMatrix;
-	bContext *C;
+
+	PyObject *pyscene;
+	PyObject *pyregion;
+	PyObject *pyview3d;
+
 	Scene *scene;
 	View3D *v3d;
 	ARegion *ar;
 	GPUFX *fx;
 
-	static const char *kwlist[] = {"projection_matrix", "modelview_matrix", NULL};
+	static const char *kwlist[] = {"scene", "region", "view3d", "projection_matrix", "modelview_matrix", NULL};
 
 	BPY_GPU_OFFSCREEN_CHECK_OBJ(self, "draw_view3d");
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&O&:draw_view3d", (char **)(kwlist),
+	if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOO&O&:draw_view3d", (char **)(kwlist),
+	                                 &pyscene, &pyregion, &pyview3d,
 	                                 pygpu_offscreen_check_matrix, &PyProjectionMatrix,
 	                                 pygpu_offscreen_check_matrix, &PyModelViewMatrix))
 	{
 		return NULL;
 	}
 
-	C = BPy_GetContext();
-	v3d = CTX_wm_view3d(C);
-	scene = CTX_data_scene(C);
-	ar = CTX_wm_region(C);
+	scene = (Scene *)PyC_RNA_AsPointer(pyscene, "Scene");
+	if (scene == NULL) {
+		PyErr_SetString(PyExc_SystemError, "draw_view3d: No valid scene");
+		return NULL;
+	}
 
-	if ((v3d == NULL) || (ar == NULL)) {
-		PyErr_SetString(PyExc_SystemError, "draw_view3d: No valid view3d in the context");
+	ar = (ARegion *)PyC_RNA_AsPointer(pyregion, "ARegion");
+	if (ar== NULL) {
+		PyErr_SetString(PyExc_SystemError, "draw_view3d: No valid region");
 		return NULL;
 	}
 
-	fx = GPU_fx_compositor_create();
+	v3d = (View3D *)PyC_RNA_AsPointer(pyview3d, "View3D");
+	if (ar== NULL) {
+		PyErr_SetString(PyExc_SystemError, "draw_view3d: No valid 3d view");
+		return NULL;
+	}
 
-	/* full copy */
-	GPUFXSettings fx_settings = v3d->fx_settings;
+	fx = GPU_fx_compositor_create();
 
-	GPU_offscreen_draw_view3d(self->ofs, C, (float(*)[4])PyProjectionMatrix->matrix, (float(*)[4])PyModelViewMatrix->matrix);
+	GPUFXSettings fx_settings = v3d->fx_settings; /* full copy */
 
 	ED_view3d_draw_offscreen_init(scene, v3d);




More information about the Bf-blender-cvs mailing list