Mercurial > pygame
annotate src/cdrom.c @ 3172:d1b367fc08bc tests-returncode
Use a return code of 1 when the tests fail.
| author | Thomas Kluyver <takowl@gmail.com> |
|---|---|
| date | Wed, 09 Jan 2013 10:13:57 +0000 |
| parents | 42e2bde1a12c |
| children |
| rev | line source |
|---|---|
| 7 | 1 /* |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
2 pygame - Python Game Library |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
3 Copyright (C) 2000-2001 Pete Shinners |
| 7 | 4 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
6 modify it under the terms of the GNU Library General Public |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
7 License as published by the Free Software Foundation; either |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
8 version 2 of the License, or (at your option) any later version. |
| 7 | 9 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
13 Library General Public License for more details. |
| 7 | 14 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
15 You should have received a copy of the GNU Library General Public |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
16 License along with this library; if not, write to the Free |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 7 | 18 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
19 Pete Shinners |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
20 pete@shinners.org |
| 7 | 21 */ |
| 22 | |
| 23 #define PYGAMEAPI_CDROM_INTERNAL | |
| 24 #include "pygame.h" | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
25 #include "pgcompat.h" |
| 1937 | 26 #include "doc/cdrom_doc.h" |
| 7 | 27 |
| 31 | 28 #define CDROM_MAXDRIVES 32 |
| 29 static SDL_CD* cdrom_drivedata[CDROM_MAXDRIVES] = {NULL}; | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
30 static PyTypeObject PyCD_Type; |
| 31 | 31 static PyObject* PyCD_New(int id); |
| 7 | 32 #define PyCD_Check(x) ((x)->ob_type == &PyCD_Type) |
| 33 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
34 static void |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
35 cdrom_autoquit (void) |
| 7 | 36 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
37 int loop; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
38 for (loop = 0; loop < CDROM_MAXDRIVES; ++loop) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
39 if (cdrom_drivedata[loop]) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
40 SDL_CDClose (cdrom_drivedata[loop]); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
41 cdrom_drivedata[loop] = NULL; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
42 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
43 } |
| 31 | 44 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
45 if (SDL_WasInit (SDL_INIT_CDROM)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
46 SDL_QuitSubSystem (SDL_INIT_CDROM); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
47 } |
| 7 | 48 } |
| 49 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
50 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
51 cdrom_autoinit (PyObject* self) |
| 7 | 52 { |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
53 if (!SDL_WasInit (SDL_INIT_CDROM)) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
54 if (SDL_InitSubSystem (SDL_INIT_CDROM)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
55 return PyInt_FromLong (0); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
56 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
57 PyGame_RegisterQuit (cdrom_autoquit); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
58 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
59 return PyInt_FromLong (1); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
60 } |
| 7 | 61 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
62 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
63 cdrom_quit (PyObject* self) |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
64 { |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
65 cdrom_autoquit (); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
66 Py_RETURN_NONE; |
| 7 | 67 } |
| 68 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
69 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
70 cdrom_init (PyObject* self) |
| 7 | 71 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
72 PyObject* result; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
73 int istrue; |
| 7 | 74 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
75 result = cdrom_autoinit (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
76 istrue = PyObject_IsTrue (result); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
77 Py_DECREF (result); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
78 if (!istrue) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
79 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
80 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
81 Py_RETURN_NONE; |
| 7 | 82 } |
| 83 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
84 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
85 get_init (PyObject* self) |
| 7 | 86 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
87 return PyInt_FromLong (SDL_WasInit (SDL_INIT_CDROM) != 0); |
| 7 | 88 } |
| 89 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
90 static void |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
91 cd_dealloc (PyObject* self) |
| 7 | 92 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
93 PyObject_DEL (self); |
| 7 | 94 } |
| 95 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
96 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
97 CD (PyObject* self, PyObject* args) |
| 7 | 98 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
99 int id; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
100 if (!PyArg_ParseTuple (args, "i", &id)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
101 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
102 } |
| 7 | 103 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
104 CDROM_INIT_CHECK (); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
105 return PyCD_New (id); |
| 7 | 106 } |
| 107 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
108 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
109 get_count (PyObject* self) |
| 7 | 110 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
111 CDROM_INIT_CHECK (); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
112 return PyInt_FromLong (SDL_CDNumDrives ()); |
| 7 | 113 } |
| 114 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
115 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
116 cd_init (PyObject* self) |
| 7 | 117 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
118 int cd_id = PyCD_AsID (self); |
| 7 | 119 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
120 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
121 if (!cdrom_drivedata[cd_id]) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
122 cdrom_drivedata[cd_id] = SDL_CDOpen (cd_id); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
123 if (!cdrom_drivedata[cd_id]) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
124 return RAISE (PyExc_SDLError, "Cannot initialize device"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
125 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
126 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
127 Py_RETURN_NONE; |
| 31 | 128 } |
| 129 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
130 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
131 cd_quit (PyObject* self) |
| 31 | 132 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
133 int cd_id = PyCD_AsID (self); |
| 31 | 134 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
135 CDROM_INIT_CHECK (); |
| 31 | 136 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
137 if (cdrom_drivedata[cd_id]) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
138 SDL_CDClose (cdrom_drivedata[cd_id]); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
139 cdrom_drivedata[cd_id] = NULL; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
140 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
141 Py_RETURN_NONE; |
| 7 | 142 } |
| 143 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
144 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
145 cd_get_init (PyObject* self) |
| 7 | 146 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
147 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
148 return PyInt_FromLong (cdrom_drivedata[cd_id] != NULL); |
| 7 | 149 } |
| 150 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
151 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
152 cd_play (PyObject* self, PyObject* args) |
| 7 | 153 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
154 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
155 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
156 int result, track, startframe, numframes, playforever=0; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
157 float start=0.0f, end=0.0f; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
158 PyObject *endobject=NULL; |
| 320 | 159 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
160 if (!PyArg_ParseTuple (args, "i|fO", &track, &start, &endobject)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
161 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
162 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
163 if (endobject == Py_None) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
164 playforever = 1; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
165 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
166 else if (!PyArg_ParseTuple (args, "i|ff", &track, &start, &end)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
167 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
168 } |
| 7 | 169 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
170 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
171 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
172 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
173 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
174 SDL_CDStatus (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
175 if (track < 0 || track >= cdrom->numtracks) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
176 return RAISE (PyExc_IndexError, "Invalid track number"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
177 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
178 if (cdrom->track[track].type != SDL_AUDIO_TRACK) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
179 return RAISE (PyExc_SDLError, "CD track type is not audio"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
180 } |
| 416 | 181 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
182 /*validate times*/ |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
183 if (playforever) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
184 end = start; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
185 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
186 else if (start == end && start != 0.0f) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
187 Py_RETURN_NONE; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
188 } |
| 416 | 189 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
190 startframe = (int)(start * CD_FPS); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
191 numframes = 0; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
192 if (startframe < 0) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
193 startframe = 0; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
194 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
195 if (end) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
196 numframes = (int) ((end-start) * CD_FPS); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
197 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
198 else { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
199 numframes = cdrom->track[track].length - startframe; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
200 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
201 if (numframes < 0 || |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
202 startframe > (int) (cdrom->track[track].length * CD_FPS)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
203 Py_RETURN_NONE; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
204 } |
| 379 | 205 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
206 result = SDL_CDPlayTracks (cdrom, track, startframe, 0, numframes); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
207 if (result == -1) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
208 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
209 } |
| 31 | 210 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
211 Py_RETURN_NONE; |
| 7 | 212 } |
| 213 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
214 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
215 cd_pause (PyObject* self) |
| 7 | 216 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
217 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
218 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
219 int result; |
| 7 | 220 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
221 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
222 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
223 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
224 } |
| 7 | 225 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
226 result = SDL_CDPause (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
227 if (result == -1) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
228 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
229 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
230 Py_RETURN_NONE; |
| 7 | 231 } |
| 232 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
233 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
234 cd_resume (PyObject* self) |
| 7 | 235 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
236 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
237 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
238 int result; |
| 7 | 239 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
240 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
241 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
242 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
243 } |
| 7 | 244 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
245 result = SDL_CDResume (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
246 if (result == -1) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
247 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
248 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
249 Py_RETURN_NONE; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
250 } |
| 7 | 251 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
252 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
253 cd_stop (PyObject* self) |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
254 { |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
255 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
256 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
257 int result; |
| 31 | 258 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
259 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
260 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
261 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
262 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
263 |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
264 result = SDL_CDStop (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
265 if (result == -1) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
266 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
267 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
268 Py_RETURN_NONE; |
| 7 | 269 } |
| 270 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
271 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
272 cd_eject (PyObject* self) |
| 7 | 273 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
274 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
275 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
276 int result; |
| 7 | 277 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
278 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
279 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
280 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
281 } |
| 7 | 282 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
283 result = SDL_CDEject (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
284 if (result == -1) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
285 return RAISE (PyExc_SDLError, SDL_GetError ()); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
286 } |
| 31 | 287 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
288 Py_RETURN_NONE; |
| 7 | 289 } |
| 290 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
291 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
292 cd_get_empty (PyObject* self) |
| 7 | 293 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
294 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
295 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
296 int status; |
| 7 | 297 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
298 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
299 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
300 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
301 } |
| 7 | 302 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
303 status = SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
304 return PyInt_FromLong (status == CD_TRAYEMPTY); |
| 7 | 305 } |
| 306 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
307 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
308 cd_get_busy (PyObject* self) |
| 7 | 309 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
310 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
311 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
312 int status; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
313 |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
314 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
315 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
316 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
317 } |
| 31 | 318 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
319 status = SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
320 return PyInt_FromLong (status == CD_PLAYING); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
321 } |
| 31 | 322 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
323 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
324 cd_get_paused (PyObject* self) |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
325 { |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
326 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
327 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
328 int status; |
| 31 | 329 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
330 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
331 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
332 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
333 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
334 |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
335 status = SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
336 return PyInt_FromLong (status == CD_PAUSED); |
| 31 | 337 } |
| 338 | |
| 339 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
340 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
341 cd_get_current (PyObject* self) |
| 31 | 342 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
343 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
344 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
345 int track; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
346 float seconds; |
| 31 | 347 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
348 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
349 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
350 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
351 } |
| 31 | 352 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
353 SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
354 track = cdrom->cur_track; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
355 seconds = cdrom->cur_frame / (float) CD_FPS; |
| 31 | 356 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
357 return Py_BuildValue ("(if)", track, seconds); |
| 31 | 358 } |
| 359 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
360 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
361 cd_get_numtracks (PyObject* self) |
| 31 | 362 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
363 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
364 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
| 31 | 365 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
366 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
367 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
368 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
369 } |
| 31 | 370 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
371 SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
372 return PyInt_FromLong (cdrom->numtracks); |
| 31 | 373 } |
| 374 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
375 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
376 cd_get_id (PyObject* self) |
| 31 | 377 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
378 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
379 return PyInt_FromLong (cd_id); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
380 } |
| 7 | 381 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
382 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
383 cd_get_name (PyObject* self) |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
384 { |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
385 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
386 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
387 return Text_FromUTF8 (SDL_CDName (cd_id)); |
| 7 | 388 } |
| 389 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
390 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
391 cd_get_track_audio (PyObject* self, PyObject* args) |
| 31 | 392 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
393 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
394 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
395 int track; |
| 7 | 396 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
397 if (!PyArg_ParseTuple (args, "i", &track)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
398 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
399 } |
| 34 | 400 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
401 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
402 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
403 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
404 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
405 SDL_CDStatus (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
406 if (track < 0 || track >= cdrom->numtracks) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
407 return RAISE (PyExc_IndexError, "Invalid track number"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
408 } |
| 379 | 409 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
410 return PyInt_FromLong (cdrom->track[track].type == SDL_AUDIO_TRACK); |
| 7 | 411 } |
| 412 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
413 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
414 cd_get_track_length (PyObject* self, PyObject* args) |
| 31 | 415 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
416 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
417 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
418 int track; |
| 7 | 419 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
420 if (!PyArg_ParseTuple (args, "i", &track)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
421 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
422 } |
| 7 | 423 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
424 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
425 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
426 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
427 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
428 SDL_CDStatus (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
429 if (track < 0 || track >= cdrom->numtracks) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
430 return RAISE (PyExc_IndexError, "Invalid track number"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
431 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
432 if (cdrom->track[track].type != SDL_AUDIO_TRACK) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
433 return PyFloat_FromDouble (0.0); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
434 } |
| 7 | 435 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
436 return PyFloat_FromDouble (cdrom->track[track].length / (double) CD_FPS); |
| 31 | 437 } |
| 7 | 438 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
439 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
440 cd_get_track_start (PyObject* self, PyObject* args) |
| 31 | 441 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
442 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
443 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
444 int track; |
| 31 | 445 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
446 if (!PyArg_ParseTuple (args, "i", &track)) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
447 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
448 } |
| 31 | 449 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
450 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
451 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
452 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
453 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
454 SDL_CDStatus (cdrom); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
455 if (track < 0 || track >= cdrom->numtracks) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
456 return RAISE (PyExc_IndexError, "Invalid track number"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
457 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
458 |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
459 return PyFloat_FromDouble (cdrom->track[track].offset / (double) CD_FPS); |
| 7 | 460 } |
| 461 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
462 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
463 cd_get_all (PyObject* self, PyObject* args) |
| 320 | 464 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
465 int cd_id = PyCD_AsID (self); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
466 SDL_CD* cdrom = cdrom_drivedata[cd_id]; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
467 int track; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
468 PyObject *tuple, *item; |
| 379 | 469 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
470 CDROM_INIT_CHECK (); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
471 if (!cdrom) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
472 return RAISE (PyExc_SDLError, "CD drive not initialized"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
473 } |
| 320 | 474 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
475 SDL_CDStatus (cdrom); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
476 tuple = PyTuple_New (cdrom->numtracks); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
477 if (!tuple) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
478 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
479 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
480 for (track=0; track < cdrom->numtracks; track++) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
481 int audio = cdrom->track[track].type == SDL_AUDIO_TRACK; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
482 double start = cdrom->track[track].offset / (double) CD_FPS; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
483 double length = cdrom->track[track].length / (double) CD_FPS; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
484 double end = start + length; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
485 item = PyTuple_New (4); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
486 if (!item) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
487 Py_DECREF (tuple); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
488 return NULL; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
489 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
490 PyTuple_SET_ITEM (item, 0, PyInt_FromLong (audio)); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
491 PyTuple_SET_ITEM (item, 1, PyFloat_FromDouble (start)); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
492 PyTuple_SET_ITEM (item, 2, PyFloat_FromDouble (end)); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
493 PyTuple_SET_ITEM (item, 3, PyFloat_FromDouble (length)); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
494 PyTuple_SET_ITEM (tuple, track, item); |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
495 } |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
496 return tuple; |
| 320 | 497 } |
| 498 | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
499 static PyMethodDef cd_methods[] = |
| 7 | 500 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
501 { "init", (PyCFunction) cd_init, METH_NOARGS, DOC_CDINIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
502 { "quit", (PyCFunction) cd_quit, METH_NOARGS, DOC_CDQUIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
503 { "get_init", (PyCFunction) cd_get_init, METH_NOARGS, DOC_CDGETINIT }, |
| 31 | 504 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
505 { "play", cd_play, METH_VARARGS, DOC_CDINIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
506 { "pause", (PyCFunction) cd_pause, METH_NOARGS, DOC_CDPAUSE }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
507 { "resume", (PyCFunction) cd_resume, METH_NOARGS, DOC_CDRESUME }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
508 { "stop", (PyCFunction) cd_stop, METH_NOARGS, DOC_CDSTOP }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
509 { "eject", (PyCFunction) cd_eject, METH_NOARGS, DOC_CDEJECT }, |
| 31 | 510 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
511 { "get_empty", (PyCFunction) cd_get_empty, METH_NOARGS, DOC_CDGETEMPTY }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
512 { "get_busy", (PyCFunction) cd_get_busy, METH_NOARGS, DOC_CDGETBUSY }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
513 { "get_paused", (PyCFunction) cd_get_paused, METH_NOARGS, DOC_CDGETPAUSED }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
514 { "get_current", (PyCFunction) cd_get_current, METH_NOARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
515 DOC_CDGETCURRENT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
516 { "get_numtracks", (PyCFunction) cd_get_numtracks, METH_NOARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
517 DOC_CDGETNUMTRACKS }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
518 { "get_id", (PyCFunction) cd_get_id, METH_NOARGS, DOC_CDGETINIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
519 { "get_name", (PyCFunction) cd_get_name, METH_NOARGS, DOC_CDGETNAME }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
520 { "get_all", (PyCFunction) cd_get_all, METH_NOARGS, DOC_CDGETALL }, |
| 31 | 521 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
522 { "get_track_audio", cd_get_track_audio, METH_VARARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
523 DOC_CDGETTRACKAUDIO }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
524 { "get_track_length", cd_get_track_length, METH_VARARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
525 DOC_CDGETTRACKLENGTH }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
526 { "get_track_start", cd_get_track_start, METH_VARARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
527 DOC_CDGETTRACKSTART }, |
| 31 | 528 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
529 { NULL, NULL, 0, NULL } |
| 7 | 530 }; |
| 531 | |
| 532 static PyTypeObject PyCD_Type = | |
| 533 { | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
534 TYPE_HEAD (NULL, 0) |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
535 "CD", /* name */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
536 sizeof(PyCDObject), /* basic size */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
537 0, /* itemsize */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
538 cd_dealloc, /* dealloc */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
539 0, /* print */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
540 0, /* getattr */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
541 0, /* setattr */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
542 0, /* compare */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
543 0, /* repr */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
544 0, /* as_number */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
545 0, /* as_sequence */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
546 0, /* as_mapping */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
547 0, /* hash */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
548 0, /* call */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
549 0, /* str */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
550 0, /* tp_getattro */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
551 0, /* tp_setattro */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
552 0, /* tp_as_buffer */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
553 0, /* flags */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
554 DOC_PYGAMECDROMCD, /* Documentation string */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
555 0, /* tp_traverse */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
556 0, /* tp_clear */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
557 0, /* tp_richcompare */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
558 0, /* tp_weaklistoffset */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
559 0, /* tp_iter */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
560 0, /* tp_iternext */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
561 cd_methods, /* tp_methods */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
562 0, /* tp_members */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
563 0, /* tp_getset */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
564 0, /* tp_base */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
565 0, /* tp_dict */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
566 0, /* tp_descr_get */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
567 0, /* tp_descr_set */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
568 0, /* tp_dictoffset */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
569 0, /* tp_init */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
570 0, /* tp_alloc */ |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
571 0, /* tp_new */ |
| 7 | 572 }; |
| 573 | |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
574 static PyObject* |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
575 PyCD_New (int id) |
| 7 | 576 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
577 PyCDObject* cd; |
| 7 | 578 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
579 if (id < 0 || id >= CDROM_MAXDRIVES || id >= SDL_CDNumDrives ()) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
580 return RAISE (PyExc_SDLError, "Invalid cdrom device number"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
581 } |
| 379 | 582 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
583 cd = PyObject_NEW (PyCDObject, &PyCD_Type); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
584 if(!cd) { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
585 return NULL; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
586 } |
| 7 | 587 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
588 cd->id = id; |
| 7 | 589 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
590 return (PyObject*)cd; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
591 } |
| 7 | 592 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
593 static PyMethodDef _cdrom_methods[] = |
| 7 | 594 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
595 { "__PYGAMEinit__", (PyCFunction) cdrom_autoinit, METH_NOARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
596 "auto initialize function" }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
597 { "init", (PyCFunction) cdrom_init, METH_NOARGS, DOC_PYGAMECDROMINIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
598 { "quit", (PyCFunction) cdrom_quit, METH_NOARGS, DOC_PYGAMECDROMQUIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
599 { "get_init", (PyCFunction) get_init, METH_NOARGS, DOC_PYGAMECDROMGETINIT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
600 { "get_count", (PyCFunction) get_count, METH_NOARGS, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
601 DOC_PYGAMECDROMGETCOUNT }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
602 { "CD", CD, METH_VARARGS, DOC_PYGAMECDROMCD }, |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
603 { NULL, NULL, 0, NULL } |
| 7 | 604 }; |
| 605 | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
606 MODINIT_DEFINE (cdrom) |
| 7 | 607 { |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
608 PyObject *module, *dict, *apiobj; |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
609 int ecode; |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
610 static void* c_api[PYGAMEAPI_CDROM_NUMSLOTS]; |
| 7 | 611 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
612 #if PY3 |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
613 static struct PyModuleDef _module = { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
614 PyModuleDef_HEAD_INIT, |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
615 "cdrom", |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
616 DOC_PYGAMECDROM, |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
617 -1, |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
618 _cdrom_methods, |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
619 NULL, NULL, NULL, NULL |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
620 }; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
621 #endif |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
622 |
|
1581
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
623 |
|
1499
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
624 /* imported needed apis; Do this first so if there is an error |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
625 the module is not loaded. |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
626 */ |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
627 import_pygame_base (); |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
628 if (PyErr_Occurred ()) { |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
629 MODINIT_ERROR; |
|
1499
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
630 } |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
631 |
|
65e001d30448
bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents:
831
diff
changeset
|
632 /* type preparation */ |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
633 if (PyType_Ready (&PyCD_Type) == -1) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
634 MODINIT_ERROR; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
635 } |
| 7 | 636 |
| 637 /* create the module */ | |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
638 #if PY3 |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
639 module = PyModule_Create (&_module); |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
640 #else |
|
1581
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
641 module = Py_InitModule3 (MODPREFIX "cdrom", |
|
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
642 _cdrom_methods, |
|
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
643 DOC_PYGAMECDROM); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
644 #endif |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
645 if (module == NULL) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
646 MODINIT_ERROR; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
647 } |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
648 dict = PyModule_GetDict (module); |
| 7 | 649 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
650 if (PyDict_SetItemString (dict, "CDType", (PyObject *)&PyCD_Type) == -1) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
651 DECREF_MOD (module); |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
652 MODINIT_ERROR; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
653 } |
| 37 | 654 |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
655 /* export the c api */ |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
656 c_api[0] = &PyCD_Type; |
|
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
657 c_api[1] = PyCD_New; |
|
2120
42e2bde1a12c
Use capsule objects in preference to cobject objects. This allows Pygame to build an run from Python 3.2, which has to cobjects.
Lenard Lindstrom <len-l@telus.net>
parents:
1937
diff
changeset
|
658 apiobj = encapsulate_api (c_api, "cdrom"); |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
659 if (apiobj == NULL) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
660 DECREF_MOD (module); |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
661 MODINIT_ERROR; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
662 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
663 ecode = PyDict_SetItemString (dict, PYGAMEAPI_LOCAL_ENTRY, apiobj); |
|
831
8749d7c235f8
Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents:
798
diff
changeset
|
664 Py_DECREF (apiobj); |
|
1581
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
665 |
|
9f910eda60c5
Starting to merge in sybian_s60 branch... still going... you like break? Well then try and build this!
Rene Dudfield <renesd@gmail.com>
parents:
1572
diff
changeset
|
666 |
|
1572
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
667 if (ecode == -1) { |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
668 DECREF_MOD (module); |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
669 MODINIT_ERROR; |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
670 } |
|
9126dee1087d
adapt joystick and cdrom modules for Python 3.1
Lenard Lindstrom <len-l@telus.net>
parents:
1499
diff
changeset
|
671 MODINIT_RETURN (module); |
| 7 | 672 } |
