Added 'keeprefcount' argument for function/method parameters in order to cope with functions/methods that decrement t...

Original commit message from CVS:
* codegen/argtypes.py:
* codegen/codegen.py:
* codegen/definitions.py:
* gst/arg-types.py:
Added 'keeprefcount' argument for function/method parameters in order to
cope with functions/methods that decrement the refcount of the given
parameter
* gst/gst.defs:
Added 'keeprefcount' for buffer argument of gst_pad_push() wrapper.
This commit is contained in:
Edward Hervey 2005-10-05 13:48:21 +00:00
parent 9d7ce16b6a
commit 16bb9b838e
6 changed files with 59 additions and 35 deletions

View file

@ -1,3 +1,15 @@
2005-10-05 Edward Hervey <edward@fluendo.com>
* codegen/argtypes.py:
* codegen/codegen.py:
* codegen/definitions.py:
* gst/arg-types.py:
Added 'keeprefcount' argument for function/method parameters in order to
cope with functions/methods that decrement the refcount of the given
parameter
* gst/gst.defs:
Added 'keeprefcount' for buffer argument of gst_pad_push() wrapper.
2005-10-05 Thomas Vander Stichele <thomas at apestaart dot org> 2005-10-05 Thomas Vander Stichele <thomas at apestaart dot org>
* gst/__init__.py: * gst/__init__.py:

View file

@ -84,7 +84,7 @@ class NoneArg(ArgType):
' return Py_None;') ' return Py_None;')
class StringArg(ArgType): class StringArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
if pdflt != 'NULL': pdflt = '"' + pdflt + '"' if pdflt != 'NULL': pdflt = '"' + pdflt + '"'
info.varlist.add('char', '*' + pname + ' = ' + pdflt) info.varlist.add('char', '*' + pname + ' = ' + pdflt)
@ -115,7 +115,7 @@ class StringArg(ArgType):
class UCharArg(ArgType): class UCharArg(ArgType):
# allows strings with embedded NULLs. # allows strings with embedded NULLs.
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('guchar', '*' + pname + ' = "' + pdflt + '"') info.varlist.add('guchar', '*' + pname + ' = "' + pdflt + '"')
else: else:
@ -130,7 +130,7 @@ class UCharArg(ArgType):
[pname]) [pname])
class CharArg(ArgType): class CharArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('char', pname + " = '" + pdflt + "'") info.varlist.add('char', pname + " = '" + pdflt + "'")
else: else:
@ -149,7 +149,7 @@ class GUniCharArg(ArgType):
'#endif\n' '#endif\n'
' py_ret = (Py_UNICODE)ret;\n' ' py_ret = (Py_UNICODE)ret;\n'
' return PyUnicode_FromUnicode(&py_ret, 1);\n') ' return PyUnicode_FromUnicode(&py_ret, 1);\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('gunichar', pname + " = '" + pdflt + "'") info.varlist.add('gunichar', pname + " = '" + pdflt + "'")
else: else:
@ -163,7 +163,7 @@ class GUniCharArg(ArgType):
class IntArg(ArgType): class IntArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('int', pname + ' = ' + pdflt) info.varlist.add('int', pname + ' = ' + pdflt)
else: else:
@ -175,7 +175,7 @@ class IntArg(ArgType):
info.codeafter.append(' return PyInt_FromLong(ret);') info.codeafter.append(' return PyInt_FromLong(ret);')
class UIntArg(ArgType): class UIntArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(ptype, pname + ' = ' + pdflt) info.varlist.add(ptype, pname + ' = ' + pdflt)
else: else:
@ -193,7 +193,7 @@ class SizeArg(ArgType):
else: else:
llp64 = False llp64 = False
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(ptype, pname + ' = ' + pdflt) info.varlist.add(ptype, pname + ' = ' + pdflt)
else: else:
@ -217,7 +217,7 @@ class SSizeArg(ArgType):
else: else:
llp64 = False llp64 = False
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(ptype, pname + ' = ' + pdflt) info.varlist.add(ptype, pname + ' = ' + pdflt)
else: else:
@ -235,7 +235,7 @@ class SSizeArg(ArgType):
info.codeafter.append(' return PyLong_FromLong(ret);\n') info.codeafter.append(' return PyLong_FromLong(ret);\n')
class LongArg(ArgType): class LongArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(ptype, pname + ' = ' + pdflt) info.varlist.add(ptype, pname + ' = ' + pdflt)
else: else:
@ -252,7 +252,7 @@ class BoolArg(IntArg):
info.codeafter.append(' return PyBool_FromLong(ret);\n') info.codeafter.append(' return PyBool_FromLong(ret);\n')
class TimeTArg(ArgType): class TimeTArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('time_t', pname + ' = ' + pdflt) info.varlist.add('time_t', pname + ' = ' + pdflt)
else: else:
@ -267,7 +267,7 @@ class ULongArg(ArgType):
dflt = ' if (py_%(name)s)\n' \ dflt = ' if (py_%(name)s)\n' \
' %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n' ' %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n'
before = ' %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n' before = ' %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n'
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('gulong', pname + ' = ' + pdflt) info.varlist.add('gulong', pname + ' = ' + pdflt)
info.codebefore.append(self.dflt % {'name':pname}) info.codebefore.append(self.dflt % {'name':pname})
@ -282,7 +282,7 @@ class ULongArg(ArgType):
info.codeafter.append(' return PyLong_FromUnsignedLong(ret);') info.codeafter.append(' return PyLong_FromUnsignedLong(ret);')
class Int64Arg(ArgType): class Int64Arg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('gint64', pname + ' = ' + pdflt) info.varlist.add('gint64', pname + ' = ' + pdflt)
else: else:
@ -297,7 +297,7 @@ class UInt64Arg(ArgType):
dflt = ' if (py_%(name)s)\n' \ dflt = ' if (py_%(name)s)\n' \
' %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n' ' %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n'
before = ' %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n' before = ' %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n'
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('guint64', pname + ' = ' + pdflt) info.varlist.add('guint64', pname + ' = ' + pdflt)
info.codebefore.append(self.dflt % {'name':pname}) info.codebefore.append(self.dflt % {'name':pname})
@ -313,7 +313,7 @@ class UInt64Arg(ArgType):
class DoubleArg(ArgType): class DoubleArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('double', pname + ' = ' + pdflt) info.varlist.add('double', pname + ' = ' + pdflt)
else: else:
@ -341,7 +341,7 @@ class FileArg(ArgType):
' }\n') ' }\n')
dflt = (' if (py_%(name)s)\n' dflt = (' if (py_%(name)s)\n'
' %(name)s = PyFile_AsFile(py_%(name)s);\n') ' %(name)s = PyFile_AsFile(py_%(name)s);\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
if pdflt: if pdflt:
info.varlist.add('FILE', '*' + pname + ' = ' + pdflt) info.varlist.add('FILE', '*' + pname + ' = ' + pdflt)
@ -376,7 +376,7 @@ class EnumArg(ArgType):
def __init__(self, enumname, typecode): def __init__(self, enumname, typecode):
self.enumname = enumname self.enumname = enumname
self.typecode = typecode self.typecode = typecode
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(self.enumname, pname + ' = ' + pdflt) info.varlist.add(self.enumname, pname + ' = ' + pdflt)
else: else:
@ -396,7 +396,7 @@ class FlagsArg(ArgType):
def __init__(self, flagname, typecode): def __init__(self, flagname, typecode):
self.flagname = flagname self.flagname = flagname
self.typecode = typecode self.typecode = typecode
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add(self.flagname, pname + ' = ' + pdflt) info.varlist.add(self.flagname, pname + ' = ' + pdflt)
default = "py_%s && " % (pname,) default = "py_%s && " % (pname,)
@ -436,7 +436,7 @@ class ObjectArg(ArgType):
self.objname = objname self.objname = objname
self.cast = string.replace(typecode, '_TYPE_', '_', 1) self.cast = string.replace(typecode, '_TYPE_', '_', 1)
self.parent = parent self.parent = parent
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
if pdflt: if pdflt:
info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt) info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt)
@ -504,7 +504,7 @@ class MiniObjectArg(ArgType):
self.objname = objname self.objname = objname
self.cast = string.replace(typecode, '_TYPE_', '_', 1) self.cast = string.replace(typecode, '_TYPE_', '_', 1)
self.parent = parent self.parent = parent
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
if pdflt: if pdflt:
info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt) info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt)
@ -534,6 +534,8 @@ class MiniObjectArg(ArgType):
info.arglist.append('%s(%s->obj)' % (self.cast, pname)) info.arglist.append('%s(%s->obj)' % (self.cast, pname))
info.add_parselist('O!', ['&Py%s_Type' % self.objname, info.add_parselist('O!', ['&Py%s_Type' % self.objname,
'&' + pname], [pname]) '&' + pname], [pname])
if keeprefcount:
info.codebefore.append(' gst_mini_object_ref(GST_MINI_OBJECT(%s));\n' % pname)
def write_return(self, ptype, ownsreturn, info): def write_return(self, ptype, ownsreturn, info):
if ptype[-1] == '*': ptype = ptype[:-1] if ptype[-1] == '*': ptype = ptype[:-1]
info.varlist.add(ptype, '*ret') info.varlist.add(ptype, '*ret')
@ -564,7 +566,7 @@ class BoxedArg(ArgType):
def __init__(self, ptype, typecode): def __init__(self, ptype, typecode):
self.typename = ptype self.typename = ptype
self.typecode = typecode self.typecode = typecode
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
info.varlist.add(self.typename, '*' + pname + ' = NULL') info.varlist.add(self.typename, '*' + pname + ' = NULL')
info.varlist.add('PyObject', '*py_' + pname + ' = Py_None') info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
@ -615,7 +617,7 @@ class CustomBoxedArg(ArgType):
self.getter = getter self.getter = getter
self.checker = 'Py' + ptype + '_Check' self.checker = 'Py' + ptype + '_Check'
self.new = new self.new = new
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
info.varlist.add(ptype[:-1], '*' + pname + ' = NULL') info.varlist.add(ptype[:-1], '*' + pname + ' = NULL')
info.varlist.add('PyObject', '*py_' + pname + ' = Py_None') info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
@ -653,7 +655,7 @@ class PointerArg(ArgType):
def __init__(self, ptype, typecode): def __init__(self, ptype, typecode):
self.typename = ptype self.typename = ptype
self.typecode = typecode self.typecode = typecode
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
info.varlist.add(self.typename, '*' + pname + ' = NULL') info.varlist.add(self.typename, '*' + pname + ' = NULL')
info.varlist.add('PyObject', '*py_' + pname + ' = Py_None') info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
@ -687,7 +689,7 @@ class AtomArg(IntArg):
atom = (' %(name)s = pygdk_atom_from_pyobject(py_%(name)s);\n' atom = (' %(name)s = pygdk_atom_from_pyobject(py_%(name)s);\n'
' if (PyErr_Occurred())\n' ' if (PyErr_Occurred())\n'
' return NULL;\n') ' return NULL;\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pdflt: if pdflt:
info.varlist.add('GdkAtom', pname + ' = ' + pdflt) info.varlist.add('GdkAtom', pname + ' = ' + pdflt)
info.varlist.add('PyObject', '*py_' + pname + ' = NULL') info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
@ -705,7 +707,7 @@ class AtomArg(IntArg):
class GTypeArg(ArgType): class GTypeArg(ArgType):
gtype = (' if ((%(name)s = pyg_type_from_object(py_%(name)s)) == 0)\n' gtype = (' if ((%(name)s = pyg_type_from_object(py_%(name)s)) == 0)\n'
' return NULL;\n') ' return NULL;\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
info.varlist.add('GType', pname) info.varlist.add('GType', pname)
info.varlist.add('PyObject', '*py_' + pname + ' = NULL') info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
info.codebefore.append(self.gtype % {'name': pname}) info.codebefore.append(self.gtype % {'name': pname})
@ -719,7 +721,7 @@ class GTypeArg(ArgType):
class GErrorArg(ArgType): class GErrorArg(ArgType):
handleerror = (' if (pyg_error_check(&%(name)s))\n' handleerror = (' if (pyg_error_check(&%(name)s))\n'
' return NULL;\n') ' return NULL;\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
info.varlist.add('GError', '*' + pname + ' = NULL') info.varlist.add('GError', '*' + pname + ' = NULL')
info.arglist.append('&' + pname) info.arglist.append('&' + pname)
info.codeafter.append(self.handleerror % { 'name': pname }) info.codeafter.append(self.handleerror % { 'name': pname })
@ -742,7 +744,7 @@ class GtkTreePathArg(ArgType):
' gtk_tree_path_free(%(name)s);\n') ' gtk_tree_path_free(%(name)s);\n')
def __init__(self): def __init__(self):
pass pass
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
info.varlist.add('GtkTreePath', '*' + pname + ' = NULL') info.varlist.add('GtkTreePath', '*' + pname + ' = NULL')
info.varlist.add('PyObject', '*py_' + pname + ' = Py_None') info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
@ -783,7 +785,7 @@ class GdkRectanglePtrArg(ArgType):
' %(name)s = &%(name)s_rect;\n' ' %(name)s = &%(name)s_rect;\n'
' else\n' ' else\n'
' return NULL;\n') ' return NULL;\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if pnull: if pnull:
info.varlist.add('GdkRectangle', pname + '_rect = { 0, 0, 0, 0 }') info.varlist.add('GdkRectangle', pname + '_rect = { 0, 0, 0, 0 }')
info.varlist.add('GdkRectangle', '*' + pname) info.varlist.add('GdkRectangle', '*' + pname)
@ -804,7 +806,7 @@ class GdkRectangleArg(ArgType):
info.codeafter.append(' return pyg_boxed_new(GDK_TYPE_RECTANGLE, &ret, TRUE, TRUE);') info.codeafter.append(' return pyg_boxed_new(GDK_TYPE_RECTANGLE, &ret, TRUE, TRUE);')
class PyObjectArg(ArgType): class PyObjectArg(ArgType):
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
info.varlist.add('PyObject', '*' + pname) info.varlist.add('PyObject', '*' + pname)
info.add_parselist('O', ['&' + pname], [pname]) info.add_parselist('O', ['&' + pname], [pname])
info.arglist.append(pname) info.arglist.append(pname)
@ -852,6 +854,7 @@ class ArgMatcher:
self.register('GdkBitmap*', oa) self.register('GdkBitmap*', oa)
def register_miniobject(self, ptype, parent, typecode): def register_miniobject(self, ptype, parent, typecode):
oa = MiniObjectArg(ptype, parent, typecode) oa = MiniObjectArg(ptype, parent, typecode)
self.register(ptype, oa) # in case I forget the * in the .defs
self.register(ptype+'*', oa) self.register(ptype+'*', oa)
def register_boxed(self, ptype, typecode): def register_boxed(self, ptype, typecode):
if self.argtypes.has_key(ptype): return if self.argtypes.has_key(ptype): return

View file

@ -280,7 +280,7 @@ class Wrapper:
info.add_parselist('|', [], []) info.add_parselist('|', [], [])
handler = argtypes.matcher.get(param.ptype) handler = argtypes.matcher.get(param.ptype)
handler.write_param(param.ptype, param.pname, param.pdflt, handler.write_param(param.ptype, param.pname, param.pdflt,
param.pnull, info) param.pnull, param.keeprefcount, info)
substdict['setreturn'] = '' substdict['setreturn'] = ''
if handle_return: if handle_return:

View file

@ -7,11 +7,12 @@ def get_valid_scheme_definitions(defs):
# New Parameter class, wich emulates a tuple for compatibility reasons # New Parameter class, wich emulates a tuple for compatibility reasons
class Parameter(object): class Parameter(object):
def __init__(self, ptype, pname, pdflt, pnull, prop=None): def __init__(self, ptype, pname, pdflt, pnull, prop=None, keeprefcount=False):
self.ptype = ptype self.ptype = ptype
self.pname = pname self.pname = pname
self.pdflt = pdflt self.pdflt = pdflt
self.pnull = pnull self.pnull = pnull
self.keeprefcount = keeprefcount
def __len__(self): return 4 def __len__(self): return 4
def __getitem__(self, i): def __getitem__(self, i):
@ -340,13 +341,17 @@ class MethodDefBase(Definition):
pname = parg[1] pname = parg[1]
pdflt = None pdflt = None
pnull = 0 pnull = 0
keeprefcount = False
for farg in parg[2:]: for farg in parg[2:]:
assert isinstance(farg, tuple) assert isinstance(farg, tuple)
if farg[0] == 'default': if farg[0] == 'default':
pdflt = farg[1] pdflt = farg[1]
elif farg[0] == 'null-ok': elif farg[0] == 'null-ok':
pnull = 1 pnull = 1
self.params.append(Parameter(ptype, pname, pdflt, pnull)) elif farg[0] == 'keep-refcount':
keeprefcount = True
self.params.append(Parameter(ptype, pname, pdflt, pnull,
keeprefcount=keeprefcount))
elif arg[0] == 'varargs': elif arg[0] == 'varargs':
self.varargs = arg[1] in ('t', '#t') self.varargs = arg[1] in ('t', '#t')
elif arg[0] == 'deprecated': elif arg[0] == 'deprecated':
@ -448,12 +453,16 @@ class FunctionDef(Definition):
pname = parg[1] pname = parg[1]
pdflt = None pdflt = None
pnull = 0 pnull = 0
keeprefcount = False
for farg in parg[2:]: for farg in parg[2:]:
if farg[0] == 'default': if farg[0] == 'default':
pdflt = farg[1] pdflt = farg[1]
elif farg[0] == 'null-ok': elif farg[0] == 'null-ok':
pnull = 1 pnull = 1
self.params.append(Parameter(ptype, pname, pdflt, pnull)) elif farg[0] == 'keep-refcount':
keeprefcount = True
self.params.append(Parameter(ptype, pname, pdflt, pnull,
keeprefcount = keeprefcount))
elif arg[0] == 'properties': elif arg[0] == 'properties':
if self.is_constructor_of is None: if self.is_constructor_of is None:
print >> sys.stderr, "Warning: (properties ...) "\ print >> sys.stderr, "Warning: (properties ...) "\

View file

@ -50,7 +50,7 @@ class XmlNodeArg(ArgType):
' PyTuple_SetItem(xargs, 0, o);\n' ' PyTuple_SetItem(xargs, 0, o);\n'
' return PyInstance_New(xobj, xargs, PyDict_New());\n') ' return PyInstance_New(xobj, xargs, PyDict_New());\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
info.varlist.add('PyObject', '*xml = _gst_get_libxml2_module()') info.varlist.add('PyObject', '*xml = _gst_get_libxml2_module()')
info.varlist.add('PyObject', '*o') info.varlist.add('PyObject', '*o')
info.varlist.add('PyObject', '*xobj') info.varlist.add('PyObject', '*xobj')
@ -90,7 +90,7 @@ class GstCapsArg(ArgType):
after = (' if (%(name)s && %(name)s_is_copy)\n' after = (' if (%(name)s && %(name)s_is_copy)\n'
' gst_caps_unref (%(name)s);\n') ' gst_caps_unref (%(name)s);\n')
def write_param(self, ptype, pname, pdflt, pnull, info): def write_param(self, ptype, pname, pdflt, pnull, keeprefcount, info):
if ptype == 'const-GstCaps*': if ptype == 'const-GstCaps*':
self.write_const_param(pname, pdflt, pnull, info) self.write_const_param(pname, pdflt, pnull, info)
elif ptype == 'GstCaps*': elif ptype == 'GstCaps*':

View file

@ -3358,7 +3358,7 @@
(c-name "gst_pad_push") (c-name "gst_pad_push")
(return-type "GstFlowReturn") (return-type "GstFlowReturn")
(parameters (parameters
'("GstBuffer*" "buffer") '("GstBuffer*" "buffer" (keep-refcount))
) )
) )