diff options
author | kbr@chromium.org <kbr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-25 22:47:51 +0000 |
---|---|---|
committer | kbr@chromium.org <kbr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-25 22:47:51 +0000 |
commit | 1a7f66eb16724be2fe195ed62141b86dd63168b1 (patch) | |
tree | 8aaeced09377f3633977787a63f7f1998100bbb8 /third_party/talloc/pytalloc.c | |
parent | 86a5293ac4571cffb0c7bb7f2da50f91ce6db829 (diff) | |
download | chromium_src-1a7f66eb16724be2fe195ed62141b86dd63168b1.zip chromium_src-1a7f66eb16724be2fe195ed62141b86dd63168b1.tar.gz chromium_src-1a7f66eb16724be2fe195ed62141b86dd63168b1.tar.bz2 |
Upgraded Mesa to 7.9 from 7.7 in order to pick up bug fixes to the
shader compiler which were causing WebGL test timeouts per
https://bugs.webkit.org/show_bug.cgi?id=47243 . Version 7.8.2 was too
buggy to use.
This upgrade required the incorporation of the talloc library, which
is only compiled in to the OSMesa shared object produced by
third_party/mesa/mesa.gyp and not into the rest of Chromium.
Upgraded mesa.gyp for the new source directories and files in Mesa
7.9. Applied the changes originally documented in
third_party/mesa/README.chromium to the 7.9 sources. Made other
necessary changes to Mesa and talloc to be able to build and run them
on Windows and Mac OS X. Created chromium.patch files for both Mesa
and talloc.
Fixed chrome/gpu/gpu_main.cc to honor the --use-gl command line option
on Linux.
Tested on Linux in Chromium with CSS 3D content and --use-gl=osmesa as
well as in DumpRenderTree and verified that the affected WebGL tests
no longer hang. Tested on Windows in Chromium with WebGL content and
--use-gl=osmesa. Tested on Mac OS X in test_shell with WebGL content.
This job was explicitly not sent to the try bots because it would
probably kill them.
The files in this CL are a small subset of the files being committed.
The patch is too large to upload to Rietveld.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/4107001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63795 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/talloc/pytalloc.c')
-rw-r--r-- | third_party/talloc/pytalloc.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/third_party/talloc/pytalloc.c b/third_party/talloc/pytalloc.c new file mode 100644 index 0000000..c6decf3 --- /dev/null +++ b/third_party/talloc/pytalloc.c @@ -0,0 +1,93 @@ +/* + Unix SMB/CIFS implementation. + Python/Talloc glue + Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "replace.h" +#include <talloc.h> +#include <pytalloc.h> + +/** + * Simple dealloc for talloc-wrapping PyObjects + */ +void py_talloc_dealloc(PyObject* self) +{ + py_talloc_Object *obj = (py_talloc_Object *)self; + talloc_free(obj->talloc_ctx); + obj->talloc_ctx = NULL; + self->ob_type->tp_free(self); +} + +/** + * Import an existing talloc pointer into a Python object. + */ +PyObject *py_talloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, + void *ptr) +{ + py_talloc_Object *ret = (py_talloc_Object *)py_type->tp_alloc(py_type, 0); + ret->talloc_ctx = talloc_new(NULL); + if (ret->talloc_ctx == NULL) { + return NULL; + } + if (talloc_steal(ret->talloc_ctx, mem_ctx) == NULL) { + return NULL; + } + ret->ptr = ptr; + return (PyObject *)ret; +} + + +/** + * Import an existing talloc pointer into a Python object, leaving the + * original parent, and creating a reference to the object in the python + * object + */ +PyObject *py_talloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr) +{ + py_talloc_Object *ret = (py_talloc_Object *)py_type->tp_alloc(py_type, 0); + ret->talloc_ctx = talloc_new(NULL); + if (ret->talloc_ctx == NULL) { + return NULL; + } + if (talloc_reference(ret->talloc_ctx, mem_ctx) == NULL) { + return NULL; + } + ret->ptr = ptr; + return (PyObject *)ret; +} + +/** + * Default (but slightly more useful than the default) implementation of Repr(). + */ +PyObject *py_talloc_default_repr(PyObject *obj) +{ + py_talloc_Object *talloc_obj = (py_talloc_Object *)obj; + PyTypeObject *type = (PyTypeObject*)PyObject_Type(obj); + + return PyString_FromFormat("<%s talloc object at 0x%p>", + type->tp_name, talloc_obj->ptr); +} + +static void py_cobject_talloc_free(void *ptr) +{ + talloc_free(ptr); +} + +PyObject *PyCObject_FromTallocPtr(void *ptr) +{ + return PyCObject_FromVoidPtr(ptr, py_cobject_talloc_free); +} |