Hello community, here is the log from the commit of package pyalsa for openSUSE:Factory checked in at 2012-03-22 12:38:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pyalsa (Old) and /work/SRC/openSUSE:Factory/.pyalsa.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pyalsa", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/pyalsa/pyalsa.changes 2011-09-23 12:42:14.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.pyalsa.new/pyalsa.changes 2012-03-22 12:38:53.000000000 +0100 @@ -1,0 +2,12 @@ +Mon Mar 12 15:05:09 CET 2012 - ti...@suse.de + +- Updated to version 1.0.25 + - Add register_poll for alsaseq + - alsa-python mixer: add poll_fds property + - ctltest1.py: use new class member names + - alsamixer: Fix bad PyArg_ParseTuple format strings +- Two backport fixes from upstream: + Fix get_volume_array() for mono channels + Fix pyalsa tests for new function names + +------------------------------------------------------------------- Old: ---- pyalsa-1.0.22.tar.bz2 New: ---- 0001-Fix-get_volume_array-for-mono-channels.patch 0002-Fix-pyalsa-tests-for-new-function-names.patch pyalsa-1.0.25.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pyalsa.spec ++++++ --- /var/tmp/diff_new_pack.xkPJBT/_old 2012-03-22 12:38:57.000000000 +0100 +++ /var/tmp/diff_new_pack.xkPJBT/_new 2012-03-22 12:38:57.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package pyalsa # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,19 +15,20 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -# norootforbuild - Name: pyalsa -BuildRequires: alsa-devel python-devel -Version: 1.0.22 -Release: 7 +BuildRequires: alsa-devel +BuildRequires: python-devel +Version: 1.0.25 +Release: 0 +Summary: Python ALSA binding License: LGPL-2.1+ ; GPL-2.0 Group: Development/Libraries/Python -Summary: Python ALSA binding Source: pyalsa-%{version}.tar.bz2 Source1: COPYING Source2: COPYING.LIB +Patch1: 0001-Fix-get_volume_array-for-mono-channels.patch +Patch2: 0002-Fix-pyalsa-tests-for-new-function-names.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %{py_requires} @@ -36,6 +37,8 @@ %prep %setup -q +%patch1 -p1 +%patch2 -p1 cp %{S:1} %{S:2} . %build ++++++ 0001-Fix-get_volume_array-for-mono-channels.patch ++++++ >From 6ca6689c8b989626a1dc58ede4aa859de98286d2 Mon Sep 17 00:00:00 2001 From: Arvin Schnell <aschn...@suse.de> Date: Mon, 12 Mar 2012 14:56:45 +0100 Subject: [PATCH 1/2] Fix get_volume_array() for mono channels also reported as bug 5546 Signed-off-by: Takashi Iwai <ti...@suse.de> --- pyalsa/alsamixer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyalsa/alsamixer.c b/pyalsa/alsamixer.c index d686f16..662a2a9 100644 --- a/pyalsa/alsamixer.c +++ b/pyalsa/alsamixer.c @@ -627,7 +627,7 @@ pyalsamixerelement_getvolumearray(struct pyalsamixerelement *pyelem, PyObject *a return NULL; res = snd_mixer_selem_get_playback_volume(pyelem->elem, SND_MIXER_SCHN_MONO, &val); if (res >= 0) - PyTuple_SetItem(t, 0, PyInt_FromLong(val)); + PyList_SetItem(t, 0, PyInt_FromLong(val)); } else { t = PyList_New(SND_MIXER_SCHN_LAST+1); if (!t) @@ -658,7 +658,7 @@ pyalsamixerelement_getvolumearray(struct pyalsamixerelement *pyelem, PyObject *a return NULL; res = snd_mixer_selem_get_capture_volume(pyelem->elem, SND_MIXER_SCHN_MONO, &val); if (res >= 0) - PyTuple_SET_ITEM(t, 0, PyInt_FromLong(val)); + PyList_SET_ITEM(t, 0, PyInt_FromLong(val)); } else { t = PyList_New(SND_MIXER_SCHN_LAST+1); if (!t) -- 1.7.9.2 ++++++ 0002-Fix-pyalsa-tests-for-new-function-names.patch ++++++ >From 21174b0a77a2d5faf9aa55617a4af28bf29fae38 Mon Sep 17 00:00:00 2001 From: Arvin Schnell <aschn...@suse.de> Date: Mon, 12 Mar 2012 14:57:43 +0100 Subject: [PATCH 2/2] Fix pyalsa tests for new function names Signed-off-by: Takashi Iwai <ti...@suse.de> --- test/mixertest2.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/mixertest2.py b/test/mixertest2.py index 24e5605..6c2d026 100755 --- a/test/mixertest2.py +++ b/test/mixertest2.py @@ -10,25 +10,25 @@ import select def parse_event_mask(events): if events == 0: return 'None' - if events == alsamixer.EventMaskRemove: + if events == alsamixer.event_mask_remove: return 'Removed' s = '' - for i in alsamixer.EventMask.keys(): - if events & alsamixer.EventMask[i]: + for i in alsamixer.event_mask.keys(): + if events & alsamixer.event_mask[i]: s += '%s ' % i return s[:-1] def event_callback(element, events): print 'CALLBACK (DEF)! [%s] %s:%i' % (parse_event_mask(events), element.name, element.index) - print ' ', element.getVolumeTuple(), element.getSwitchTuple() + print ' ', element.get_volume_tuple(), element.get_switch_tuple() class MyElementEvent: def callback(self, element, events): print 'CALLBACK (CLASS)! [%s] %s:%i' % (parse_event_mask(events), element.name, element.index) - print ' ', element.getVolumeTuple(), element.getSwitchTuple() + print ' ', element.get_volume_tuple(), element.get_switch_tuple() mixer = alsamixer.Mixer() @@ -36,13 +36,13 @@ mixer.attach() mixer.load() element1 = alsamixer.Element(mixer, "Front") -element1.setCallback(event_callback) +element1.set_callback(event_callback) element2 = alsamixer.Element(mixer, "PCM") -element2.setCallback(MyElementEvent()) +element2.set_callback(MyElementEvent()) poller = select.poll() -mixer.registerPoll(poller) +mixer.register_poll(poller) while True: poller.poll() print 'Poll OK!' - mixer.handleEvents() + mixer.handle_events() -- 1.7.9.2 ++++++ pyalsa-1.0.22.tar.bz2 -> pyalsa-1.0.25.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/PKG-INFO new/pyalsa-1.0.25/PKG-INFO --- old/pyalsa-1.0.22/PKG-INFO 2009-12-16 16:30:48.000000000 +0100 +++ new/pyalsa-1.0.25/PKG-INFO 2012-01-25 10:33:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: pyalsa -Version: 1.0.22 +Version: 1.0.25 Summary: UNKNOWN Home-page: UNKNOWN Author: The ALSA Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/pyalsa/alsamixer.c new/pyalsa-1.0.25/pyalsa/alsamixer.c --- old/pyalsa-1.0.22/pyalsa/alsamixer.c 2009-12-16 16:18:56.000000000 +0100 +++ new/pyalsa-1.0.25/pyalsa/alsamixer.c 2012-01-25 08:57:13.000000000 +0100 @@ -164,9 +164,7 @@ count = snd_mixer_poll_descriptors_count(self->handle); if (count <= 0) Py_RETURN_NONE; - pfd = malloc(sizeof(struct pollfd) * count); - if (pfd == NULL) - Py_RETURN_NONE; + pfd = alloca(sizeof(struct pollfd) * count); count = snd_mixer_poll_descriptors(self->handle, pfd, count); if (count <= 0) Py_RETURN_NONE; @@ -188,6 +186,38 @@ Py_RETURN_NONE; } +static PyObject * +pyalsamixer_getpollfds(struct pyalsamixer *self, void *priv) +{ + PyObject *l, *t; + struct pollfd *pfds; + int i, count; + + count = snd_mixer_poll_descriptors_count(self->handle); + if (count < 0) { +pfds_error: + PyErr_Format(PyExc_IOError, "poll descriptors error: %s", snd_strerror(count)); + return NULL; + } + pfds = alloca(sizeof(struct pollfd) * count); + count = snd_mixer_poll_descriptors(self->handle, pfds, count); + if (count < 0) + goto pfds_error; + + l = PyList_New(count); + if (!l) + return NULL; + for (i = 0; i < count; ++i) { + t = PyTuple_New(2); + if (t) { + PyTuple_SET_ITEM(t, 0, PyInt_FromLong(pfds[i].fd)); + PyTuple_SET_ITEM(t, 1, PyInt_FromLong(pfds[i].events)); + PyList_SetItem(l, i, t); + } + } + return l; +} + PyDoc_STRVAR(list__doc__, "list() -- Return a list (tuple) of element IDs in (name,index) tuple."); @@ -257,7 +287,8 @@ static PyGetSetDef pyalsamixer_getseters[] = { - {"count", (getter)pyalsamixer_getcount, NULL, "mixer element count", NULL}, + {"count", (getter)pyalsamixer_getcount, NULL, "mixer element count", NULL}, + {"poll_fds", (getter)pyalsamixer_getpollfds, NULL, "list of (fd, eventbits) tuples", NULL}, {NULL} }; @@ -341,7 +372,7 @@ { int res, dir = 0; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) @@ -362,7 +393,7 @@ { int res, dir = 0, chn = SND_MIXER_SCHN_MONO; - if (!PyArg_ParseTuple(args, "|II", &chn, &dir)) + if (!PyArg_ParseTuple(args, "|ii", &chn, &dir)) return NULL; if (dir == 0) @@ -384,7 +415,7 @@ { int res, dir = 0; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) @@ -413,7 +444,7 @@ { int res, dir = 0; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) @@ -442,7 +473,7 @@ int res, dir = 0; long volume, val; - if (!PyArg_ParseTuple(args, "|LI", &volume, &dir)) + if (!PyArg_ParseTuple(args, "|li", &volume, &dir)) return NULL; if (dir == 0) @@ -465,7 +496,7 @@ int res, xdir = -1, dir = 0; long dBvolume, val; - if (!PyArg_ParseTuple(args, "|LII", &dBvolume, &xdir, &dir)) + if (!PyArg_ParseTuple(args, "|lii", &dBvolume, &xdir, &dir)) return NULL; if (dir == 0) @@ -488,7 +519,7 @@ int res, dir = 0, chn = SND_MIXER_SCHN_MONO; long val; - if (!PyArg_ParseTuple(args, "|II", &chn, &dir)) + if (!PyArg_ParseTuple(args, "|ii", &chn, &dir)) return NULL; if (dir == 0) @@ -512,7 +543,7 @@ long val; PyObject *t; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) { @@ -586,7 +617,7 @@ long val; PyObject *t, *l; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) { @@ -663,7 +694,7 @@ int res, dir = 0, chn = SND_MIXER_SCHN_MONO; long val; - if (!PyArg_ParseTuple(args, "L|II", &val, &chn, &dir)) + if (!PyArg_ParseTuple(args, "l|ii", &val, &chn, &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_volume(pyelem->elem, chn, val); @@ -687,7 +718,7 @@ int i, res, dir = 0; long val; - if (!PyArg_ParseTuple(args, "O|I", &t, &dir)) + if (!PyArg_ParseTuple(args, "O|i", &t, &dir)) return NULL; if (!PyTuple_Check(t) && !PyList_Check(t)) return PyErr_Format(PyExc_RuntimeError, "Volume values in tuple are expected!"); @@ -739,7 +770,7 @@ int res, dir = 0; long val; - if (!PyArg_ParseTuple(args, "L|I", &val, &dir)) + if (!PyArg_ParseTuple(args, "l|i", &val, &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_volume_all(pyelem->elem, val); @@ -760,7 +791,7 @@ long min, max; PyObject *t; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_get_playback_volume_range(pyelem->elem, &min, &max); @@ -785,7 +816,7 @@ int dir = 0, res; long min, max; - if (!PyArg_ParseTuple(args, "LL|I", &min, &max, &dir)) + if (!PyArg_ParseTuple(args, "ll|i", &min, &max, &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_volume_range(pyelem->elem, min, max); @@ -804,7 +835,7 @@ { int res, dir = 0, chn = SND_MIXER_SCHN_MONO, val; - if (!PyArg_ParseTuple(args, "|II", &chn, &dir)) + if (!PyArg_ParseTuple(args, "|ii", &chn, &dir)) return NULL; if (dir == 0) @@ -831,7 +862,7 @@ int res, dir = 0, i, last, val; PyObject *t; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) { @@ -903,7 +934,7 @@ { int res, dir = 0, chn = SND_MIXER_SCHN_MONO, val; - if (!PyArg_ParseTuple(args, "I|II", &val, &chn, &dir)) + if (!PyArg_ParseTuple(args, "i|ii", &val, &chn, &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_switch(pyelem->elem, chn, val); @@ -923,7 +954,7 @@ PyObject *t, *o; int i, res, dir = 0, val; - if (!PyArg_ParseTuple(args, "O|I", &t, &dir)) + if (!PyArg_ParseTuple(args, "O|i", &t, &dir)) return NULL; if (!PyTuple_Check(t)) return PyErr_Format(PyExc_RuntimeError, "Switch state values in tuple are expected!"); @@ -951,7 +982,7 @@ { int res, dir = 0, val; - if (!PyArg_ParseTuple(args, "I|I", &val, &dir)) + if (!PyArg_ParseTuple(args, "i|i", &val, &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_switch_all(pyelem->elem, val); @@ -971,7 +1002,7 @@ int res, dir = 0, chn = SND_MIXER_SCHN_MONO; long val; - if (!PyArg_ParseTuple(args, "|II", &chn, &dir)) + if (!PyArg_ParseTuple(args, "|ii", &chn, &dir)) return NULL; if (dir == 0) @@ -994,7 +1025,7 @@ int res, dir = 0, dir1 = 0, chn = SND_MIXER_SCHN_MONO; long val; - if (!PyArg_ParseTuple(args, "L|III", &val, &chn, &dir, &dir1)) + if (!PyArg_ParseTuple(args, "l|iii", &val, &chn, &dir, &dir1)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_dB(pyelem->elem, chn, val, dir1); @@ -1014,7 +1045,7 @@ int res, dir = 0, dir1 = 0; long val; - if (!PyArg_ParseTuple(args, "L|II", &val, &dir, &dir1)) + if (!PyArg_ParseTuple(args, "l|ii", &val, &dir, &dir1)) return NULL; if (dir == 0) res = snd_mixer_selem_set_playback_dB_all(pyelem->elem, val, dir1); @@ -1035,7 +1066,7 @@ long min, max; PyObject *t; - if (!PyArg_ParseTuple(args, "|I", &dir)) + if (!PyArg_ParseTuple(args, "|i", &dir)) return NULL; if (dir == 0) res = snd_mixer_selem_get_playback_dB_range(pyelem->elem, &min, &max); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/pyalsa/alsaseq.c new/pyalsa-1.0.25/pyalsa/alsaseq.c --- old/pyalsa-1.0.22/pyalsa/alsaseq.c 2009-12-16 16:18:56.000000000 +0100 +++ new/pyalsa-1.0.25/pyalsa/alsaseq.c 2012-01-25 08:57:13.000000000 +0100 @@ -3236,6 +3236,53 @@ Py_RETURN_NONE; } +PyDoc_STRVAR(Sequencer_registerpoll__doc__, +"register_poll(pollObj, input=False, output=False) -- Register poll file descriptors."); + +static PyObject * +Sequencer_registerpoll(SequencerObject *self, PyObject *args, PyObject *kwds) +{ + PyObject *pollObj, *reg, *t; + struct pollfd *pfd; + int i, count; + int input = 0; + int output = 0; + int mode = POLLIN|POLLOUT; + + static char * kwlist[] = { "pollObj", "input", "output", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|ii", kwlist, &pollObj, &input, &output)) + return NULL; + + if (input && !output) + mode = POLLIN; + else if (!input && output) + mode = POLLOUT; + + count = snd_seq_poll_descriptors_count(self->handle, mode); + if (count <= 0) + Py_RETURN_NONE; + pfd = alloca(sizeof(struct pollfd) * count); + count = snd_seq_poll_descriptors(self->handle, pfd, count, mode); + if (count <= 0) + Py_RETURN_NONE; + + reg = PyObject_GetAttr(pollObj, PyString_InternFromString("register")); + + for (i = 0; i < count; i++) { + t = PyTuple_New(2); + if (t) { + PyTuple_SET_ITEM(t, 0, PyInt_FromLong(pfd[i].fd)); + PyTuple_SET_ITEM(t, 1, PyInt_FromLong(pfd[i].events)); + Py_XDECREF(PyObject_CallObject(reg, t)); + Py_DECREF(t); + } + } + + Py_XDECREF(reg); + + Py_RETURN_NONE; +} @@ -3309,6 +3356,10 @@ (PyCFunction) Sequencer_stop_queue, METH_VARARGS | METH_KEYWORDS, Sequencer_stop_queue__doc__}, + {"register_poll", + (PyCFunction) Sequencer_registerpoll, + METH_VARARGS | METH_KEYWORDS, + Sequencer_registerpoll__doc__}, {NULL} }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/pyalsa.egg-info/PKG-INFO new/pyalsa-1.0.25/pyalsa.egg-info/PKG-INFO --- old/pyalsa-1.0.22/pyalsa.egg-info/PKG-INFO 2009-12-16 16:30:48.000000000 +0100 +++ new/pyalsa-1.0.25/pyalsa.egg-info/PKG-INFO 2012-01-25 10:33:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: pyalsa -Version: 1.0.22 +Version: 1.0.25 Summary: UNKNOWN Home-page: UNKNOWN Author: The ALSA Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/setup.py new/pyalsa-1.0.25/setup.py --- old/pyalsa-1.0.22/setup.py 2009-12-16 16:18:56.000000000 +0100 +++ new/pyalsa-1.0.25/setup.py 2012-01-25 08:57:13.000000000 +0100 @@ -8,7 +8,7 @@ except ImportError: from distutils.core import setup, Extension -VERSION='1.0.22' +VERSION='1.0.25' if os.path.exists("version"): fp = open("version", "r") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/test/ctltest1.py new/pyalsa-1.0.25/test/ctltest1.py --- old/pyalsa-1.0.22/test/ctltest1.py 2009-12-16 16:18:56.000000000 +0100 +++ new/pyalsa-1.0.25/test/ctltest1.py 2012-01-25 08:57:13.000000000 +0100 @@ -7,16 +7,16 @@ import alsacontrol ctl = alsacontrol.Control() -print 'Card info:', ctl.cardInfo() +print 'Card info:', ctl.card_info() try: - print 'Hwdep devices:', ctl.hwdepDevices() + print 'Hwdep devices:', ctl.hwdep_devices() except IOError, msg: print 'No hwdep devices:', msg try: - print 'PCM devices:', ctl.pcmDevices() + print 'PCM devices:', ctl.pcm_devices() except IOError, msg: print 'No PCM devices:', msg try: - print 'Rawmidi devices:', ctl.rawmidiDevices() + print 'Rawmidi devices:', ctl.rawmidi_devices() except IOError, msg: print 'No rawmidi devices:', msg diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyalsa-1.0.22/utils/remove-user-ctl.py new/pyalsa-1.0.25/utils/remove-user-ctl.py --- old/pyalsa-1.0.22/utils/remove-user-ctl.py 2009-12-16 16:18:56.000000000 +0100 +++ new/pyalsa-1.0.25/utils/remove-user-ctl.py 2012-01-25 08:57:13.000000000 +0100 @@ -3,11 +3,11 @@ from pyalsa.alsahcontrol import HControl, Element, Info -hctl = HControl() +hctl = HControl(name='hw:1') list = hctl.list() for id in list: elem = Element(hctl, id[1:]) info = Info(elem) - if info.isUser: + if info.is_user: print 'Removing element %s' % repr(id) - hctl.elementRemove(id[1:]) + hctl.element_remove(id[1:]) -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org