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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
21 */
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
22
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
23 #define PYGAMEAPI_CDROM_INTERNAL
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
0d661c00c1aa Merged FreeType branch into trunk.
tanoku
parents: 1581
diff changeset
26 #include "doc/cdrom_doc.h"
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
27
31
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
28 #define CDROM_MAXDRIVES 32
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
31 static PyObject* PyCD_New(int id);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
32 #define PyCD_Check(x) ((x)->ob_type == &PyCD_Type)
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
48 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
67 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
82 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
88 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
94 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
106 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
113 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
128 }
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
142 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
149 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
c744f33ee34b no message
pygame
parents: 181
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
26a16442aa65 ready for 1.5.3
pygame
parents: 403
diff changeset
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
26a16442aa65 ready for 1.5.3
pygame
parents: 403
diff changeset
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
b10db29af3b9 CD.play redone
pygame
parents: 347
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
212 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
231 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
269 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
289 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
305 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
337 }
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
338
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
358 }
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
373 }
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
388 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
3c9a13bcbd4d joystick module rewritten
pygame
parents: 31
diff changeset
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
b10db29af3b9 CD.play redone
pygame
parents: 347
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
411 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
437 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
460 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
c744f33ee34b no message
pygame
parents: 181
diff changeset
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
b10db29af3b9 CD.play redone
pygame
parents: 347
diff changeset
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
c744f33ee34b no message
pygame
parents: 181
diff changeset
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
c744f33ee34b no message
pygame
parents: 181
diff changeset
497 }
c744f33ee34b no message
pygame
parents: 181
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
530 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
531
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
532 static PyTypeObject PyCD_Type =
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
572 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
b10db29af3b9 CD.play redone
pygame
parents: 347
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
604 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
636
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
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
e5eb000a88d8 object types added
pygame
parents: 36
diff changeset
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
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
672 }