Update of /cvsroot/freevo/kaa/xine/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12285
Modified Files:
__init__.py audio_port.c post.c post.h post_in.c post_out.c
stream.c video_port.c xine.c xine.h
Log Message:
Added get_post_plugin method to PostIn and PostOut objects; refactored
garbage collection functions (clear/traverse) for all types.
Index: stream.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/stream.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** stream.c 19 Jul 2005 05:51:59 -0000 1.5
--- stream.c 19 Jul 2005 16:22:20 -0000 1.6
***************
*** 37,62 ****
Xine_Stream_PyObject__clear(Xine_Stream_PyObject *self)
{
! PyObject *tmp;
! if (self->xine_pyobject) {
! tmp = self->xine_pyobject;
! self->xine_pyobject = 0;
! Py_DECREF(tmp);
! }
! if (self->ao_pyobject) {
! tmp = (PyObject *)self->ao_pyobject;
! self->ao_pyobject = 0;
! Py_DECREF(tmp);
! }
! if (self->vo_pyobject) {
! tmp = (PyObject *)self->vo_pyobject;
! self->vo_pyobject = 0;
! Py_DECREF(tmp);
! }
! if (self->master) {
! tmp = (PyObject *)self->master;
! self->master= 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 37,43 ----
Xine_Stream_PyObject__clear(Xine_Stream_PyObject *self)
{
! PyObject **list[] = {&self->xine_pyobject, (PyObject
**)&self->ao_pyobject,
! (PyObject **)&self->vo_pyobject, &self->master,
NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 64,89 ****
Xine_Stream_PyObject__traverse(Xine_Stream_PyObject *self, visitproc visit,
void *arg)
{
! int ret;
! if (self->xine_pyobject) {
! ret = visit((PyObject *)self->xine_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! if (self->ao_pyobject) {
! ret = visit((PyObject *)self->ao_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! if (self->vo_pyobject) {
! ret = visit((PyObject *)self->vo_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! if (self->master) {
! ret = visit((PyObject *)self->master, arg);
! if (ret != 0)
! return ret;
! }
! return 0;
}
--- 45,51 ----
Xine_Stream_PyObject__traverse(Xine_Stream_PyObject *self, visitproc visit,
void *arg)
{
! PyObject **list[] = {&self->xine_pyobject, (PyObject
**)&self->ao_pyobject,
! (PyObject **)&self->vo_pyobject, &self->master,
NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
***************
*** 193,196 ****
--- 155,166 ----
PyObject *
+ Xine_Stream_PyObject_close(Xine_Stream_PyObject *self, PyObject *args,
PyObject *kwargs)
+ {
+ Py_BEGIN_ALLOW_THREADS
+ xine_close(self->stream);
+ Py_END_ALLOW_THREADS
+ return Py_INCREF(Py_None), Py_None;
+ }
+ PyObject *
Xine_Stream_PyObject_get_source(Xine_Stream_PyObject *self, PyObject *args,
PyObject *kwargs)
{
***************
*** 332,335 ****
--- 302,306 ----
{"stop", (PyCFunction) Xine_Stream_PyObject_stop, METH_VARARGS },
{"eject", (PyCFunction) Xine_Stream_PyObject_eject, METH_VARARGS },
+ {"close", (PyCFunction) Xine_Stream_PyObject_close, METH_VARARGS },
{"get_source", (PyCFunction) Xine_Stream_PyObject_get_source,
METH_VARARGS },
{"slave", (PyCFunction) Xine_Stream_PyObject_slave, METH_VARARGS },
Index: post.h
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/post.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** post.h 18 Jul 2005 03:40:21 -0000 1.1
--- post.h 19 Jul 2005 16:22:20 -0000 1.2
***************
*** 5,8 ****
--- 5,9 ----
#include <Python.h>
#include <xine.h>
+ #include <xine/post.h>
***************
*** 19,22 ****
--- 20,24 ----
PyObject *audio_targets, *video_targets;
+ PyObject *prev, *next; // ref to previous and next plugins in the chain
PyObject *wrapper;
} Xine_Post_PyObject;
Index: post_in.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/post_in.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** post_in.c 18 Jul 2005 19:36:50 -0000 1.1
--- post_in.c 19 Jul 2005 16:22:20 -0000 1.2
***************
*** 28,38 ****
Xine_Post_In_PyObject__clear(Xine_Post_In_PyObject *self)
{
! PyObject *tmp;
! if (self->post_pyobject) {
! tmp = self->post_pyobject;
! self->post_pyobject = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 28,34 ----
Xine_Post_In_PyObject__clear(Xine_Post_In_PyObject *self)
{
! PyObject **list[] = {&self->post_pyobject, &self->wrapper, NULL};
! return pyxine_gc_helper_clear(list);
!
}
***************
*** 40,49 ****
Xine_Post_In_PyObject__traverse(Xine_Post_In_PyObject *self, visitproc visit,
void *arg)
{
! int ret;
! if (self->post_pyobject) {
! ret = visit((PyObject *)self->post_pyobject, arg);
! if (ret != 0)
! return ret;
! }
}
--- 36,41 ----
Xine_Post_In_PyObject__traverse(Xine_Post_In_PyObject *self, visitproc visit,
void *arg)
{
! PyObject **list[] = {&self->post_pyobject, &self->wrapper, NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
***************
*** 85,89 ****
if (self->post_in && self->xine_object_owner) {
}
- Py_DECREF(self->wrapper);
Xine_Post_In_PyObject__clear(self);
xine_object_to_pyobject_unregister(self->post_in);
--- 77,80 ----
Index: xine.h
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/xine.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** xine.h 19 Jul 2005 04:17:08 -0000 1.3
--- xine.h 19 Jul 2005 16:22:22 -0000 1.4
***************
*** 22,25 ****
--- 22,29 ----
PyObject *xine_object_to_pyobject_find(void *ptr);
+ int pyxine_gc_helper_traverse(PyObject ***list, visitproc visit, void *arg);
+ int pyxine_gc_helper_clear(PyObject ***list);
+
+
#endif
Index: post.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/post.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** post.c 18 Jul 2005 19:36:49 -0000 1.2
--- post.c 19 Jul 2005 16:22:20 -0000 1.3
***************
*** 38,58 ****
Xine_Post_PyObject__clear(Xine_Post_PyObject *self)
{
! PyObject *tmp;
! if (self->xine_pyobject) {
! tmp = self->xine_pyobject;
! self->xine_pyobject = 0;
! Py_DECREF(tmp);
! }
! if (self->audio_targets) {
! tmp = self->audio_targets;
! self->audio_targets = 0;
! Py_DECREF(tmp);
! }
! if (self->video_targets) {
! tmp = self->video_targets;
! self->video_targets = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 38,44 ----
Xine_Post_PyObject__clear(Xine_Post_PyObject *self)
{
! PyObject **list[] = {&self->xine_pyobject, &self->audio_targets,
! &self->video_targets, &self->prev, &self->next,
NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 60,80 ****
Xine_Post_PyObject__traverse(Xine_Post_PyObject *self, visitproc visit, void
*arg)
{
! int ret;
! if (self->xine_pyobject) {
! ret = visit((PyObject *)self->xine_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! if (self->audio_targets) {
! ret = visit((PyObject *)self->audio_targets, arg);
! if (ret != 0)
! return ret;
! }
! if (self->video_targets) {
! ret = visit((PyObject *)self->video_targets, arg);
! if (ret != 0)
! return ret;
! }
! return 0;
}
--- 46,52 ----
Xine_Post_PyObject__traverse(Xine_Post_PyObject *self, visitproc visit, void
*arg)
{
! PyObject **list[] = {&self->xine_pyobject, &self->audio_targets,
! &self->video_targets, &self->prev, &self->next,
NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
***************
*** 93,97 ****
self->xine = NULL;
self->xine_pyobject = NULL;
! self->wrapper = Py_None;
Py_INCREF(Py_None);
return (PyObject *)self;
--- 65,71 ----
self->xine = NULL;
self->xine_pyobject = NULL;
! self->wrapper = self->prev = self->next = Py_None;
! Py_INCREF(Py_None);
! Py_INCREF(Py_None);
Py_INCREF(Py_None);
return (PyObject *)self;
***************
*** 105,108 ****
--- 79,84 ----
static PyMemberDef Xine_Post_PyObject_members[] = {
+ {"prev", T_OBJECT_EX, offsetof(Xine_Post_PyObject, prev), 0, "Previous
plugin in chain"},
+ {"next", T_OBJECT_EX, offsetof(Xine_Post_PyObject, next), 0, "Next plugin
in chain"},
{"wrapper", T_OBJECT_EX, offsetof(Xine_Post_PyObject, wrapper), 0,
"Wrapper object"},
{NULL}
Index: post_out.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/post_out.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** post_out.c 18 Jul 2005 19:36:50 -0000 1.1
--- post_out.c 19 Jul 2005 16:22:20 -0000 1.2
***************
*** 26,29 ****
--- 26,30 ----
Py_INCREF(post);
o->xine_object_owner = owner;
+
xine_object_to_pyobject_register(post_out, (PyObject *)o);
return o;
***************
*** 34,44 ****
Xine_Post_Out_PyObject__clear(Xine_Post_Out_PyObject *self)
{
! PyObject *tmp;
! if (self->post_pyobject) {
! tmp = self->post_pyobject;
! self->post_pyobject = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 35,40 ----
Xine_Post_Out_PyObject__clear(Xine_Post_Out_PyObject *self)
{
! PyObject **list[] = {&self->post_pyobject, &self->wrapper, NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 46,55 ****
Xine_Post_Out_PyObject__traverse(Xine_Post_Out_PyObject *self, visitproc
visit, void *arg)
{
! int ret;
! if (self->post_pyobject) {
! ret = visit((PyObject *)self->post_pyobject, arg);
! if (ret != 0)
! return ret;
! }
}
--- 42,47 ----
Xine_Post_Out_PyObject__traverse(Xine_Post_Out_PyObject *self, visitproc
visit, void *arg)
{
! PyObject **list[] = {&self->post_pyobject, &self->wrapper, NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
***************
*** 91,95 ****
if (self->post_out && self->xine_object_owner) {
}
- Py_DECREF(self->wrapper);
Xine_Post_Out_PyObject__clear(self);
xine_object_to_pyobject_unregister(self->post_out);
--- 83,86 ----
Index: video_port.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/video_port.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** video_port.c 19 Jul 2005 02:07:24 -0000 1.4
--- video_port.c 19 Jul 2005 16:22:21 -0000 1.5
***************
*** 33,44 ****
Xine_Video_Port_PyObject__clear(Xine_Video_Port_PyObject * self)
{
! PyObject *tmp;
!
! if (self->xine_pyobject) {
! tmp = self->xine_pyobject;
! self->xine_pyobject = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 33,38 ----
Xine_Video_Port_PyObject__clear(Xine_Video_Port_PyObject * self)
{
! PyObject **list[] = {&self->xine_pyobject, NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 47,58 ****
visitproc visit, void *arg)
{
! int ret;
!
! if (self->xine_pyobject) {
! ret = visit((PyObject *) self->xine_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! return 0;
}
--- 41,46 ----
visitproc visit, void *arg)
{
! PyObject **list[] = {&self->xine_pyobject, NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
Index: xine.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/xine.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** xine.c 19 Jul 2005 06:01:24 -0000 1.7
--- xine.c 19 Jul 2005 16:22:22 -0000 1.8
***************
*** 53,57 ****
}
! ///
void
--- 53,84 ----
}
! //
! // GC helper functions
! int
! pyxine_gc_helper_clear(PyObject ***list)
! {
! int i;
! for (i = 0; list[i] && *list[i]; i++) {
! PyObject *tmp = *list[i];
! *list[i] = 0;
! Py_DECREF(tmp);
! }
! return 0;
! }
!
! int
! pyxine_gc_helper_traverse(PyObject ***list, visitproc visit, void *arg)
! {
! int i, ret;
! for (i = 0; list[i] && *list[i]; i++) {
! ret = visit(*list[i], arg);
! if (ret != 0)
! return ret;
! }
! return 0;
! }
!
! //
!
void
***************
*** 73,88 ****
Xine_PyObject__clear(Xine_PyObject *self)
{
! PyObject *tmp;
! if (self->dependencies) {
! tmp = self->dependencies;
! self->dependencies= 0;
! Py_DECREF(tmp);
! }
! if (self->log_callback) {
! tmp = self->log_callback;
! self->log_callback = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 100,105 ----
Xine_PyObject__clear(Xine_PyObject *self)
{
! PyObject **list[] = {&self->dependencies, &self->log_callback, NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 90,104 ****
Xine_PyObject__traverse(Xine_PyObject *self, visitproc visit, void *arg)
{
! if (self->dependencies) {
! int ret = visit(self->dependencies, arg);
! if (ret != 0)
! return ret;
! }
! if (self->log_callback) {
! int ret = visit(self->log_callback, arg);
! if (ret != 0)
! return ret;
! }
! return 0;
}
--- 107,112 ----
Xine_PyObject__traverse(Xine_PyObject *self, visitproc visit, void *arg)
{
! PyObject **list[] = {&self->dependencies, &self->log_callback, NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
Index: __init__.py
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/__init__.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** __init__.py 19 Jul 2005 06:01:24 -0000 1.7
--- __init__.py 19 Jul 2005 16:22:18 -0000 1.8
***************
*** 11,14 ****
--- 11,17 ----
def _wrap_xine_object(obj):
+ if obj == None:
+ return obj
+
if obj.wrapper and obj.wrapper():
return obj.wrapper()
***************
*** 140,147 ****
self.signals["log"].emit(section)
! def get_engine_param(self, param):
return self._xine.get_engine_param(param)
! def set_engine_param(self, param, value):
return self._xine.set_engine_param(param, value)
--- 143,150 ----
self.signals["log"].emit(section)
! def get_parameter(self, param):
return self._xine.get_engine_param(param)
! def set_parameter(self, param, value):
return self._xine.set_engine_param(param, value)
***************
*** 207,210 ****
--- 210,216 ----
return self._stream.stop()
+ def close(self):
+ return self._stream.close()
+
def eject(self):
return self._stream.eject()
***************
*** 285,288 ****
--- 291,297 ----
return _wrap_xine_object(self._post.post_input(name))
+ # def wire(self, input):
+ # output = self.get_output
+
class PostOut(object):
***************
*** 300,305 ****
--- 309,320 ----
raise XineError, "Unsupported input type: " + str(type(input))
+ def get_post_plugin(self):
+ return _wrap_xine_object(self._post_out.post)
+
class PostIn(object):
def __init__(self, post_in):
self._post_in = post_in
+
+ def get_post_plugin(self):
+ return _wrap_xine_object(self._post_in.post)
Index: audio_port.c
===================================================================
RCS file: /cvsroot/freevo/kaa/xine/src/audio_port.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** audio_port.c 19 Jul 2005 02:07:24 -0000 1.4
--- audio_port.c 19 Jul 2005 16:22:20 -0000 1.5
***************
*** 29,39 ****
Xine_Audio_Port_PyObject__clear(Xine_Audio_Port_PyObject *self)
{
! PyObject *tmp;
! if (self->xine_pyobject) {
! tmp = self->xine_pyobject;
! self->xine_pyobject = 0;
! Py_DECREF(tmp);
! }
! return 0;
}
--- 29,34 ----
Xine_Audio_Port_PyObject__clear(Xine_Audio_Port_PyObject *self)
{
! PyObject **list[] = {&self->xine_pyobject, NULL};
! return pyxine_gc_helper_clear(list);
}
***************
*** 41,51 ****
Xine_Audio_Port_PyObject__traverse(Xine_Audio_Port_PyObject *self, visitproc
visit, void *arg)
{
! int ret;
! if (self->xine_pyobject) {
! ret = visit((PyObject *)self->xine_pyobject, arg);
! if (ret != 0)
! return ret;
! }
! return 0;
}
--- 36,41 ----
Xine_Audio_Port_PyObject__traverse(Xine_Audio_Port_PyObject *self, visitproc
visit, void *arg)
{
! PyObject **list[] = {&self->xine_pyobject, NULL};
! return pyxine_gc_helper_traverse(list, visit, arg);
}
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog