[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36500] branches/cycles/intern/cycles: Cycles: two 32 bit fixes with help from IRC user Agiofws.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu May 5 15:51:33 CEST 2011


Revision: 36500
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36500
Author:   blendix
Date:     2011-05-05 13:51:33 +0000 (Thu, 05 May 2011)
Log Message:
-----------
Cycles: two 32 bit fixes with help from IRC user Agiofws.

Modified Paths:
--------------
    branches/cycles/intern/cycles/blender/blender_python.cpp
    branches/cycles/intern/cycles/util/util_system.cpp

Modified: branches/cycles/intern/cycles/blender/blender_python.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_python.cpp	2011-05-05 13:29:16 UTC (rev 36499)
+++ branches/cycles/intern/cycles/blender/blender_python.cpp	2011-05-05 13:51:33 UTC (rev 36500)
@@ -41,34 +41,34 @@
 
 static PyObject *create_func(PyObject *self, PyObject *args)
 {
-	Py_ssize_t pyengine, pydata, pyscene, pyregion, pyv3d, pyrv3d;
+	PyObject *pyengine, *pydata, *pyscene, *pyregion, *pyv3d, *pyrv3d;
 
-	if(!PyArg_ParseTuple(args, "nnnnnn", &pyengine, &pydata, &pyscene, &pyregion, &pyv3d, &pyrv3d))
+	if(!PyArg_ParseTuple(args, "OOOOOO", &pyengine, &pydata, &pyscene, &pyregion, &pyv3d, &pyrv3d))
 		return NULL;
 
 	/* RNA */
 	PointerRNA engineptr;
-	RNA_pointer_create(NULL, &RNA_RenderEngine, (void*)pyengine, &engineptr);
+	RNA_pointer_create(NULL, &RNA_RenderEngine, (void*)PyLong_AsVoidPtr(pyengine), &engineptr);
 	BL::RenderEngine engine(engineptr);
 
 	PointerRNA dataptr;
-	RNA_id_pointer_create((ID*)pydata, &dataptr);
+	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pydata), &dataptr);
 	BL::BlendData data(dataptr);
 
 	PointerRNA sceneptr;
-	RNA_id_pointer_create((ID*)pyscene, &sceneptr);
+	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyscene), &sceneptr);
 	BL::Scene scene(sceneptr);
 
 	PointerRNA regionptr;
-	RNA_id_pointer_create((ID*)pyregion, &regionptr);
+	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyregion), &regionptr);
 	BL::Region region(regionptr);
 
 	PointerRNA v3dptr;
-	RNA_id_pointer_create((ID*)pyv3d, &v3dptr);
+	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyv3d), &v3dptr);
 	BL::SpaceView3D v3d(v3dptr);
 
 	PointerRNA rv3dptr;
-	RNA_id_pointer_create((ID*)pyrv3d, &rv3dptr);
+	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyrv3d), &rv3dptr);
 	BL::RegionView3D rv3d(rv3dptr);
 
 	/* create session */
@@ -91,12 +91,12 @@
 
 static PyObject *free_func(PyObject *self, PyObject *args)
 {
-	Py_ssize_t pysession;
+	PyObject *pysession;
 
-	if(!PyArg_ParseTuple(args, "n", &pysession))
+	if(!PyArg_ParseTuple(args, "O", &pysession))
 		return NULL;
 
-	delete (BlenderSession*)pysession;
+	delete (BlenderSession*)PyLong_AsVoidPtr(pysession);
 
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -104,14 +104,14 @@
 
 static PyObject *render_func(PyObject *self, PyObject *args)
 {
-	Py_ssize_t pysession;
+	PyObject *pysession;
 
-	if(!PyArg_ParseTuple(args, "n", &pysession))
+	if(!PyArg_ParseTuple(args, "O", &pysession))
 		return NULL;
 	
 	Py_BEGIN_ALLOW_THREADS
 
-	BlenderSession *session = (BlenderSession*)pysession;
+	BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(pysession);
 	session->render();
 
 	Py_END_ALLOW_THREADS
@@ -122,16 +122,16 @@
 
 static PyObject *draw_func(PyObject *self, PyObject *args)
 {
-	Py_ssize_t pysession, pyv3d, pyrv3d;
+	PyObject *pysession, *pyv3d, *pyrv3d;
 
-	if(!PyArg_ParseTuple(args, "nnn", &pysession, &pyv3d, &pyrv3d))
+	if(!PyArg_ParseTuple(args, "OOO", &pysession, &pyv3d, &pyrv3d))
 		return NULL;
 	
-	BlenderSession *session = (BlenderSession*)pysession;
+	BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(pysession);
 
 	bool draw_text = false;
 
-	if(pyrv3d) {
+	if(PyLong_AsVoidPtr(pyrv3d)) {
 		/* 3d view drawing */
 		int viewport[4];
 		glGetIntegerv(GL_VIEWPORT, viewport);
@@ -164,12 +164,12 @@
 
 static PyObject *sync_func(PyObject *self, PyObject *args)
 {
-	Py_ssize_t pysession;
+	PyObject *pysession;
 
-	if(!PyArg_ParseTuple(args, "n", &pysession))
+	if(!PyArg_ParseTuple(args, "O", &pysession))
 		return NULL;
 
-	BlenderSession *session = (BlenderSession*)pysession;
+	BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(pysession);
 	session->synchronize();
 
 	Py_INCREF(Py_None);

Modified: branches/cycles/intern/cycles/util/util_system.cpp
===================================================================
--- branches/cycles/intern/cycles/util/util_system.cpp	2011-05-05 13:29:16 UTC (rev 36499)
+++ branches/cycles/intern/cycles/util/util_system.cpp	2011-05-05 13:51:33 UTC (rev 36500)
@@ -60,7 +60,18 @@
 #ifndef _WIN32
 static void __cpuid(int data[4], int selector)
 {
+#ifdef __x86_64__
 	asm("cpuid" : "=a" (data[0]), "=b" (data[1]), "=c" (data[2]), "=d" (data[3]) : "a"(selector));
+#else
+#ifdef __i386__
+	asm("pushl %%ebx    \n\t"
+		"cpuid          \n\t"
+		"movl %%ebx, %1 \n\t"
+		"popl %%ebx     \n\t" : "=a" (data[0]), "=r" (data[1]), "=c" (data[2]), "=d" (data[3]) : "a"(selector));
+#else
+	data[0] = data[1] = data[2] = data[3] = 0;
+#endif
+#endif
 }
 #endif
 




More information about the Bf-blender-cvs mailing list