mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
configure.ac: Require python 2.3
Original commit message from CVS: * configure.ac: Require python 2.3 * gst/gstmodule.c (python_do_pending_calls): Use PyGILState and friends here. * gst/gst.override (_pygst_main_quit, _pygst_main): Use these two instead of gst_main/gst_main_quit so we can check if we're in a mainloop or not.
This commit is contained in:
parent
b18efd0d22
commit
169626bb24
5 changed files with 91 additions and 18 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2004-08-03 Johan Dahlin <johan@gnome.org>
|
||||||
|
|
||||||
|
* configure.ac: Require python 2.3
|
||||||
|
|
||||||
|
* gst/gstmodule.c (python_do_pending_calls): Use PyGILState and
|
||||||
|
friends here.
|
||||||
|
|
||||||
|
* gst/gst.override (_pygst_main_quit, _pygst_main): Use these two
|
||||||
|
instead of gst_main/gst_main_quit so we can check if we're in a
|
||||||
|
mainloop or not.
|
||||||
|
|
||||||
2004-08-02 Thomas Vander Stichele <thomas at apestaart dot org>
|
2004-08-02 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* gst/gst.defs:
|
* gst/gst.defs:
|
||||||
|
|
13
configure.ac
13
configure.ac
|
@ -34,10 +34,10 @@ AC_PROG_LIBTOOL
|
||||||
dnl check for python
|
dnl check for python
|
||||||
dnl AM_PATH_PYTHON(2.2)
|
dnl AM_PATH_PYTHON(2.2)
|
||||||
AM_PATH_PYTHON
|
AM_PATH_PYTHON
|
||||||
AC_MSG_CHECKING(for python >= 2.2)
|
AC_MSG_CHECKING(for python >= 2.3)
|
||||||
prog="
|
prog="
|
||||||
import sys, string
|
import sys, string
|
||||||
minver = (2,2,0,'final',0)
|
minver = (2,3,0,'final',0)
|
||||||
if sys.version_info < minver:
|
if sys.version_info < minver:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
sys.exit(0)"
|
sys.exit(0)"
|
||||||
|
@ -76,12 +76,11 @@ PYGTK_H2DEF=`$PKG_CONFIG --variable=codegendir pygtk-2.0`/h2def.py
|
||||||
AC_SUBST(PYGTK_H2DEF)
|
AC_SUBST(PYGTK_H2DEF)
|
||||||
AC_MSG_RESULT($PYGTK_H2DEF)
|
AC_MSG_RESULT($PYGTK_H2DEF)
|
||||||
|
|
||||||
dnl AC_MSG_CHECKING(for pygtk codegen)
|
AC_MSG_CHECKING(for pygtk codegen)
|
||||||
dnl PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/codegen.py"
|
PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/codegen.py"
|
||||||
dnl AC_SUBST(PYGTK_CODEGEN)
|
dnl PYGTK_CODEGEN="$PYTHON \$(top_srcdir)/codegen/codegen.py"
|
||||||
dnl AC_MSG_RESULT($PYGTK_CODEGEN)
|
|
||||||
PYGTK_CODEGEN="$PYTHON \$(top_srcdir)/codegen/codegen.py"
|
|
||||||
AC_SUBST(PYGTK_CODEGEN)
|
AC_SUBST(PYGTK_CODEGEN)
|
||||||
|
AC_MSG_RESULT($PYGTK_CODEGEN)
|
||||||
|
|
||||||
dnl Interfaces
|
dnl Interfaces
|
||||||
AC_MSG_CHECKING(for GStreamer interfaces include dir)
|
AC_MSG_CHECKING(for GStreamer interfaces include dir)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* -*- Mode: C; ; c-file-style: "python" -*- */
|
/* -*- Mode: C; c-basic-offset: 4 -*- */
|
||||||
so/* gst-python
|
so/* gst-python
|
||||||
* Copyright (C) 2002 David I. Lehn
|
* Copyright (C) 2002 David I. Lehn
|
||||||
* Copyright (C) 2004 Johan Dahlin
|
* Copyright (C) 2004 Johan Dahlin
|
||||||
|
@ -37,6 +37,33 @@ headers
|
||||||
extern gboolean pygst_data_from_pyobject (PyObject *object, GstData **data);
|
extern gboolean pygst_data_from_pyobject (PyObject *object, GstData **data);
|
||||||
static PyObject *_wrap_gst_element_factory_make(PyObject *self, PyObject *args, PyObject *kwargs);
|
static PyObject *_wrap_gst_element_factory_make(PyObject *self, PyObject *args, PyObject *kwargs);
|
||||||
|
|
||||||
|
GSList *mainloops = NULL;
|
||||||
|
void
|
||||||
|
_pygst_main_quit(void)
|
||||||
|
{
|
||||||
|
if (!mainloops)
|
||||||
|
g_error ("Quit more loops than there are");
|
||||||
|
else {
|
||||||
|
GMainLoop *loop = mainloops->data;
|
||||||
|
|
||||||
|
mainloops = g_slist_delete_link (mainloops, mainloops);
|
||||||
|
g_main_loop_quit (loop);
|
||||||
|
g_main_loop_unref (loop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_pygst_main(void)
|
||||||
|
{
|
||||||
|
GMainLoop *loop;
|
||||||
|
|
||||||
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
mainloops = g_slist_prepend (mainloops, loop);
|
||||||
|
|
||||||
|
g_main_loop_run (loop);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
include
|
include
|
||||||
gstbin.override
|
gstbin.override
|
||||||
|
@ -598,6 +625,27 @@ _wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
|
override gst_structure_get_int kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_structure_get_int(PyObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "fieldname", NULL };
|
||||||
|
char *fieldname;
|
||||||
|
int value;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||||
|
"s:GstStructure.get_int",
|
||||||
|
kwlist, &fieldname))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (gst_structure_get_int(pyg_boxed_get(self, GstStructure), fieldname, &value))
|
||||||
|
return PyInt_FromLong(value);
|
||||||
|
|
||||||
|
/* XXX: Raise exception? */
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
%%
|
||||||
override-slot GstStructure.tp_as_mapping
|
override-slot GstStructure.tp_as_mapping
|
||||||
static int
|
static int
|
||||||
_wrap_gst_structure_length(PyGObject *self)
|
_wrap_gst_structure_length(PyGObject *self)
|
||||||
|
@ -885,9 +933,11 @@ override gst_main noargs
|
||||||
static PyObject *
|
static PyObject *
|
||||||
_wrap_gst_main(PyObject *self)
|
_wrap_gst_main(PyObject *self)
|
||||||
{
|
{
|
||||||
pyg_unblock_threads();
|
Py_BEGIN_ALLOW_THREADS;
|
||||||
gst_main();
|
|
||||||
pyg_block_threads();
|
_pygst_main();
|
||||||
|
|
||||||
|
Py_END_ALLOW_THREADS;
|
||||||
|
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -896,6 +946,18 @@ _wrap_gst_main(PyObject *self)
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
%%
|
||||||
|
override gst_main_quit args
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_main_quit(PyObject *self)
|
||||||
|
{
|
||||||
|
|
||||||
|
_pygst_main_quit();
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
override-slot GstElement.tp_init kwargs
|
override-slot GstElement.tp_init kwargs
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -94,9 +94,9 @@ _wrap_gst_bin_iterate(PyGObject *self)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
pyg_unblock_threads();
|
Py_BEGIN_ALLOW_THREADS;
|
||||||
ret = gst_bin_iterate(GST_BIN(self->obj));
|
ret = gst_bin_iterate(GST_BIN(self->obj));
|
||||||
pyg_block_threads();
|
Py_END_ALLOW_THREADS;
|
||||||
return PyInt_FromLong(ret);
|
return PyInt_FromLong(ret);
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
|
|
|
@ -33,22 +33,23 @@ void pygst_register_classes (PyObject *d);
|
||||||
void pygst_add_constants(PyObject *module, const gchar *strip_prefix);
|
void pygst_add_constants(PyObject *module, const gchar *strip_prefix);
|
||||||
|
|
||||||
extern PyMethodDef pygst_functions[];
|
extern PyMethodDef pygst_functions[];
|
||||||
|
extern GSList *mainloops;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
python_do_pending_calls(gpointer data)
|
python_do_pending_calls(gpointer data)
|
||||||
{
|
{
|
||||||
gboolean quit = FALSE;
|
gboolean quit = FALSE;
|
||||||
|
PyGILState_STATE state;
|
||||||
|
|
||||||
pyg_block_threads();
|
state = PyGILState_Ensure();
|
||||||
if (PyErr_CheckSignals() == -1) {
|
if (PyErr_CheckSignals() == -1) {
|
||||||
PyErr_SetNone(PyExc_KeyboardInterrupt);
|
PyErr_SetNone(PyExc_KeyboardInterrupt);
|
||||||
quit = TRUE;
|
quit = TRUE;
|
||||||
}
|
}
|
||||||
pyg_unblock_threads();
|
if (quit && mainloops != NULL)
|
||||||
|
|
||||||
if (quit)
|
|
||||||
gst_main_quit();
|
gst_main_quit();
|
||||||
|
|
||||||
|
PyGILState_Release(state);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue