It seems pygst_value_from_pyobject should not unref the passed
in object. Wrap the original pygst_value_from_pyobject in a function
that converts unicode python objects and then unrefs the temporary
object after extraction into a GValue.
Setting gst.TAG_TRACK_NUMBER was failing because GStreamer
expects a uint while Python object -> GValue conversion was
giving an int. gst_tag_to_vorbis_comment was wrapped so
this conversion could be tested and failed on properly.
The way to properly fix this issue was in fact to disable the registry
scanning when we import gst from the python plugin loader since...
we are 100% guaranteed this is being called from a registry scan :)
Those two lines will never be called, because caps2 will always be NULL
if we go to error (either we haven't used it yet (first goto and in this
case it's NULL), or.. it's NULL (second goto)).
This means that we take a completely new caps for the sole usage of
gst-python. The GstCaps return by gst_static_pad_template_get_caps() are
(surprise) static and therefore will always exist... as long as the
GstStaticPadTemplate (and the factory providing it) still exist.
This solves the case of getting the caps of a static pad template *before*
any element was created using the GstElementFactory. When the factory is
used to create an element, a new factory is created, replacing the old one,
and plainly discarding any static values (including those caps).
This behaviour is symmetrical to what we do at the very beginning (incrementing
the Python refcount of the wrapper object and decrementing the C refcount of the
actual object).
Original commit message from CVS:
* gst/pygstiterator.c: (pygst_iterator_new):
* testsuite/test_iterator.py:
Raise an Exception when wrapping a NULL GstIterator.
Fixes#566903
Original commit message from CVS:
patch by: Vincent GENIEUX <mutex at runbox dot com>
* gst/gststructure.override:
Don't leak key names in _wrap_gst_structure_keys.
Original commit message from CVS:
Patch by : Vincent Genieux <mutex at runbox dot com>
* gst/arg-types.py:
Fix memory leak for GstMiniObjects used as parameters in class method
overrides.
Fixes#543961
Original commit message from CVS:
* gst/gstpad.override:
Fix memory leak for functions that return a newly created buffer as
a function argument.
Fixes#554545
Original commit message from CVS:
* codegen/argtypes.py:
Add handling of 'keep-refcount' for GBoxed arguments.
* gst/gst.defs:
Mark the appropriate 'gst_message_new_*' arguments when the method
takes the ownership of the passed gst.Structure/gst.TagList
* testsuite/test_message.py:
Test for creating messages that take a gst.Structure/gst.TagList as
argument and make sure they're properly created.
Fixes#556054
Original commit message from CVS:
reviewed by: Edward Hervey <edward.hervey@collabora.co.uk>
* gst/__init__.py:
Fix on systems that don't have dlopen or don't support RTLD_GLOBAL and
RTLD_LAZY.
Original commit message from CVS:
Patch by: Thiemo Seufer <ths at networkno dot de>
* gst/__init__.py:
Use correct values for RTLD_GLOBAL and RTLD_LAZY on Linux/MIPS
as the values are different there from all other Linux platforms.
Fixes bug #553134.
Original commit message from CVS:
Patch by: Alexander Wirt <formorer at debian dot org>
* gst/__init__.py:
Import modules in the correct order, i.e. libxml2 before
GStreamer stuff, to prevent unresolved symbols. Fixes bug #553131.
Original commit message from CVS:
* gst/gstcaps.override:
Override gst_caps_append_structure() and make a copy of the structure
given as argument.
Fixes#549450
Original commit message from CVS:
* gst/gst-0.10.15.ignore:
* gst/gst-types.defs:
* gst/gst.defs:
Add gstdebugutils.[ch] methods that weren't wrapped previously.
We can now dump pipeline graphviz files from python ! :)
Original commit message from CVS:
* gst/gstbuffer.override:
the GstBuffer overrides seem to be confused about whether they're
mini-objects or a GBoxed, and it makes copy_on_write no actually
return a usable gst.Buffer. Fix up places where GstBuffers are
treated as GBoxed to use pygstminiobject functions.
Makes gst.Buffer('blah').copy_on_write() work.
* testsuite/test_buffer.py:
Add test for copy-on-write writability
* examples/buffer-draw.py:
Add an example of drawing on a GStreamer buffer with cairo
* gst/gstpad.override:
Make function static
Original commit message from CVS:
* gst/gstevent.override:
gst_event_new_tag takes ownership of the GstTagList given
as argument, therefore make a copy before calling the
C function.
Fixes#534888
Original commit message from CVS:
Patch by: Jan Schmidt <thaytan at mad dot scientist dot com>
* gst/__init__.py:
Make gst.Fraction simplify like the C counterpart
Fixes#532809
Original commit message from CVS:
Patch by: Johan Dahlin <johan at gnome dot org>
* gst/__init__.py:
* gst/gstelement.override:
* testsuite/test_element.py:
New 'fancy' constructor for gst.Element, allows creating elements in a
more pythonic way (i.e. myelement = gst.Element("oggmux")).
Fixes#530417
Original commit message from CVS:
Patch by: Alessandro Decina <alessandro at nnva dot org>
* gst/gstelementfactory.override:
Release GIL in gst_element_factory_overrides.
Fixes#529731
Original commit message from CVS:
* gst/gst.override:
(_wrap_GstURIHandler__proxy_do_get_protocols_full):
Don't crash by unreffing NULL when calling the
do_get_protocols_full method raises an exception.
Original commit message from CVS:
reviewed by: Edward Hervey <edward.hervey@collabora.co.uk>
* gst/gstpad.override:
* testsuite/test_pad.py:
Fix memleak in gst.Pad.set_blocked_async()
Fixes#514717
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Remove do_pending_calls timeout which has been handled more gracefully
in pygobject MainLoop for the past 3 years.
Fixes#512916
Original commit message from CVS:
* configure.ac:
* gst/Makefile.am:
* gst/base.defs:
* gst/gst-0.10.15.ignore:
* gst/gst-0.10.16.ignore:
* gst/gst-pb-0.10.15.ignore:
* gst/gst-pb-0.10.16.ignore:
* gst/gst.defs:
* gst/gstversion.override.in:
* gst/pbutils.override:
* testsuite/test_pbutils.py:
Series of update for new API added to 0.10.16.
Remove wrong ignore file for 0.10.15 -base.
Original commit message from CVS:
reviewed by: Edward Hervey <edward.hervey@collabora.co.uk>
* gst/gstpad.override:
* testsuite/test_pad.py:
Re-implement wrapping of gst_pad_add_*probe in order to avoid leaks of
user-data associated with the probes.
Fixes#504786
Original commit message from CVS:
* gst/Makefile.am:
gst.pbutils also needs to handle miniobjects
* gst/pbutils.defs:
Add new InstallPluginsContext boxed definition.
All the *_new() functions should be accessible (and not act as
constructors).
* gst/pbutils.override:
Add override for install_plugins_sync().
* gst/pbutilsmodule.c:
Add pygst_debug debug category in this module too.
* testsuite/test_pbutils.py:
Test existence of new API. Needs more tests.
Original commit message from CVS:
* gst/Makefile.am:
* gst/common.h:
* gst/pbutils.defs:
* gst/pbutils.override:
* gst/pbutilsmodule.c: (initpbutils):
new gst.pbutils module that wraps the gst-plugins-base pbutils
helper library.
* testsuite/Makefile.am:
* testsuite/common.py:
* testsuite/test_pbutils.py:
Test case for gst.pbutils
Fixes#472822
Original commit message from CVS:
2007-11-01 Johan Dahlin <johan@gnome.org>
* gst/gst.override:
* gst/gst-0.10.15.ignore:
Make sure it still builds with GStreamer 0.10.14.
Original commit message from CVS:
* gst/gst.defs:
* gst/gst.override:
Patch from Alessandro Decina adding get_type_full and
get_protocols_full private vfuncs to the URIHandler interface
to allow bindings to support creating URI handlers.
Partially fixes: #339279
Original commit message from CVS:
* gst/gst.defs:
* gst/gst.override:
Thanks to Sebastien Merle for resurrecting a patch I'd forgotten about
that adds a constructor method for gst.GError, so you can create
error gst.Message.
Added a few GIL releases for overrides.
Original commit message from CVS:
* gst/gstobject.override:
Release the GIL when calling gst_object_get_path_string() since it can
cause deadlocks with new pygobject behaviour.
Original commit message from CVS:
* gst/base.defs:
* gst/libs.defs:
* gst/gst.defs:
* gst/gst.override:
Update API definitions for GStreamer core and gst-plugins-base.
* configure.ac:
* gst/Makefile.am:
* gst/gst-0.10.15.ignore:
* gst/gst-pb-0.10.15.ignore:
* gst/gstversion.override.in:
New .ignore for 0.10.14.* API
Original commit message from CVS:
* gst/pygstminiobject.c: (pygstminiobject_dealloc):
Move up variable declaration to the top of the function.
* win32/vs6/gst_python.dsw:
* win32/vs6/libgstpython.dsp:
* win32/vs6/pygenfiles.dsp:
* win32/MANIFEST
Add new project files to build with VS6.
Original commit message from CVS:
2007-09-11 Andy Wingo <wingo@pobox.com>
* gst/gstmodule.c (DL_EXPORT): Remove the atexit(gst_deinit).
Atexit handlers are run after python has finalized (see Py_Exit in
pythonrun.c), but gst_deinit can potentially call back into python
e.g. for python-defined plugins. Not sure how other people are
avoiding this segfault, but I see it all the time on Gusty x86-64
with Flumotion.