annotate src/display.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 /*
29
ae12316035a9 default font added, all color args changed to RGBA
pygame
parents: 26
diff changeset
24 * pygame display module
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
25 */
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
26 #define PYGAMEAPI_DISPLAY_INTERNAL
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
27 #include "pygame.h"
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
28 #include "pgcompat.h"
1937
0d661c00c1aa Merged FreeType branch into trunk.
tanoku
parents: 1912
diff changeset
29 #include "doc/display_doc.h"
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
30 #include <SDL_syswm.h>
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
31
505
951a91f0ab40 Added an extensible package data acquisition system (pkgdata)
bob
parents: 491
diff changeset
32
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
33 static PyTypeObject PyVidInfo_Type;
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
34 static PyObject* PyVidInfo_New (const SDL_VideoInfo* info);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
35 static void do_set_icon (PyObject *surface);
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
36 static PyObject* DisplaySurfaceObject = NULL;
341
efefe96cb14b rotate 90 bugfix
pygame
parents: 339
diff changeset
37 static int icon_was_set = 0;
efefe96cb14b rotate 90 bugfix
pygame
parents: 339
diff changeset
38
565
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
39 #if (!defined(darwin))
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
40 static char* icon_defaultname = "pygame_icon.bmp";
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
41 static char* pkgdatamodule_name = "pygame.pkgdata";
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
42 static char* imagemodule_name = "pygame.image";
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
43 static char* resourcefunc_name = "getResource";
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
44 static char* load_basicfunc_name = "load_basic";
505
951a91f0ab40 Added an extensible package data acquisition system (pkgdata)
bob
parents: 491
diff changeset
45
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
46 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
47 display_resource (char *filename)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
48 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
49 PyObject* imagemodule = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
50 PyObject* load_basicfunc = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
51 PyObject* pkgdatamodule = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
52 PyObject* resourcefunc = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
53 PyObject* fresult = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
54 PyObject* result = NULL;
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
55 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
56 PyObject* name = NULL;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
57 #endif
565
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
58
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
59 pkgdatamodule = PyImport_ImportModule (pkgdatamodule_name);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
60 if (!pkgdatamodule)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
61 goto display_resource_end;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
62
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
63 resourcefunc = PyObject_GetAttrString (pkgdatamodule, resourcefunc_name);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
64 if (!resourcefunc)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
65 goto display_resource_end;
565
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
66
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
67 imagemodule = PyImport_ImportModule (imagemodule_name);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
68 if (!imagemodule)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
69 goto display_resource_end;
565
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
70
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
71 load_basicfunc = PyObject_GetAttrString
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
72 (imagemodule, load_basicfunc_name);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
73 if (!load_basicfunc)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
74 goto display_resource_end;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
75
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
76 fresult = PyObject_CallFunction (resourcefunc, "s", filename);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
77 if (!fresult)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
78 goto display_resource_end;
580
f384e54cc75a return file names if the resource loader returns a file()
bob
parents: 569
diff changeset
79
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
80 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
81 name = PyObject_GetAttrString (fresult, "name");
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
82 if (name != NULL) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
83 if (Text_Check (name)) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
84 Py_DECREF (fresult);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
85 fresult = name;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
86 name = NULL;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
87 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
88 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
89 else {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
90 PyErr_Clear ();
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
91 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
92 #else
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
93 if (PyFile_Check (fresult)) {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
94 PyObject *tmp = PyFile_Name (fresult);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
95 Py_INCREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
96 Py_DECREF (fresult);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
97 fresult = tmp;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
98 }
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
99 #endif
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
100
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
101 result = PyObject_CallFunction (load_basicfunc, "O", fresult);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
102 if (!result) goto display_resource_end;
505
951a91f0ab40 Added an extensible package data acquisition system (pkgdata)
bob
parents: 491
diff changeset
103
565
9ee5c22d5c61 rewrite pkgdata, fix some whitespace issues
bob
parents: 552
diff changeset
104 display_resource_end:
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
105 Py_XDECREF (pkgdatamodule);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
106 Py_XDECREF (resourcefunc);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
107 Py_XDECREF (imagemodule);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
108 Py_XDECREF (load_basicfunc);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
109 Py_XDECREF (fresult);
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
110 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
111 Py_XDECREF (name);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
112 #endif
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
113 return result;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
114 }
31
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
115 #endif
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
116
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
117 /* init routines */
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
118 static void
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
119 display_autoquit (void)
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
120 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
121 if (DisplaySurfaceObject)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
122 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
123 PySurface_AsSurface (DisplaySurfaceObject) = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
124 Py_DECREF (DisplaySurfaceObject);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
125 DisplaySurfaceObject = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
126 }
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
127 }
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
128
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
129 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
130 display_autoinit (PyObject* self, PyObject* arg)
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
131 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
132 PyGame_RegisterQuit (display_autoquit);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
133 return PyInt_FromLong (1);
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
134 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
135
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
136 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
137 quit (PyObject* self, PyObject* arg)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
138 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
139 PyGame_Video_AutoQuit ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
140 display_autoquit ();
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
141
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
142 Py_RETURN_NONE;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
143 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
144
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
145 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
146 init (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
147 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
148 if (!PyGame_Video_AutoInit())
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
149 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
150 if (!display_autoinit (NULL, NULL))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
151 return NULL;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
152
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
153 Py_RETURN_NONE;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
154 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
155
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
156 static PyObject*
1557
6b581f917c95 clean up METH_NOARG functions which were accidently given a second C argument in display.c
Lenard Lindstrom <len-l@telus.net>
parents: 1553
diff changeset
157 get_init (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
158 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
159 return PyInt_FromLong (SDL_WasInit (SDL_INIT_VIDEO) != 0);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
160 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
161
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
162 static PyObject*
1557
6b581f917c95 clean up METH_NOARG functions which were accidently given a second C argument in display.c
Lenard Lindstrom <len-l@telus.net>
parents: 1553
diff changeset
163 get_active (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
164 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
165 return PyInt_FromLong ((SDL_GetAppState () & SDL_APPACTIVE) != 0);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
166 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
167
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
168 /* vidinfo object */
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
169 static void
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
170 vidinfo_dealloc (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
171 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
172 PyObject_DEL (self);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
173 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
174
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
175 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
176 vidinfo_getattr (PyObject *self, char *name)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
177 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
178 SDL_VideoInfo* info = &((PyVidInfoObject*) self)->info;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
179
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
180 int current_w = -1;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
181 int current_h = -1;
760
6866908c2a24 Added current_h and current_w to the display.Info() object.
Rene Dudfield <renesd@gmail.com>
parents: 633
diff changeset
182
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
183 SDL_version versioninfo;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
184 SDL_VERSION (&versioninfo);
760
6866908c2a24 Added current_h and current_w to the display.Info() object.
Rene Dudfield <renesd@gmail.com>
parents: 633
diff changeset
185
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
186 if (versioninfo.major >= 1 && versioninfo.minor >= 2
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
187 && versioninfo.patch >= 10 )
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
188 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
189 current_w = info->current_w;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
190 current_h = info->current_h;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
191 }
760
6866908c2a24 Added current_h and current_w to the display.Info() object.
Rene Dudfield <renesd@gmail.com>
parents: 633
diff changeset
192
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
193 if (!strcmp (name, "hw"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
194 return PyInt_FromLong (info->hw_available);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
195 else if (!strcmp (name, "wm"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
196 return PyInt_FromLong (info->wm_available);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
197 else if (!strcmp (name, "blit_hw"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
198 return PyInt_FromLong (info->blit_hw);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
199 else if (!strcmp (name, "blit_hw_CC"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
200 return PyInt_FromLong (info->blit_hw_CC);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
201 else if (!strcmp (name, "blit_hw_A"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
202 return PyInt_FromLong (info->blit_hw_A);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
203 else if (!strcmp (name, "blit_sw"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
204 return PyInt_FromLong (info->blit_hw);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
205 else if (!strcmp (name, "blit_sw_CC"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
206 return PyInt_FromLong (info->blit_hw_CC);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
207 else if (!strcmp (name, "blit_sw_A"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
208 return PyInt_FromLong (info->blit_hw_A);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
209 else if (!strcmp (name, "blit_fill"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
210 return PyInt_FromLong (info->blit_fill);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
211 else if (!strcmp (name, "video_mem"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
212 return PyInt_FromLong (info->video_mem);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
213 else if (!strcmp (name, "bitsize"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
214 return PyInt_FromLong (info->vfmt->BitsPerPixel);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
215 else if (!strcmp (name, "bytesize"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
216 return PyInt_FromLong (info->vfmt->BytesPerPixel);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
217 else if (!strcmp (name, "masks"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
218 return Py_BuildValue ("(iiii)", info->vfmt->Rmask, info->vfmt->Gmask,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
219 info->vfmt->Bmask, info->vfmt->Amask);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
220 else if (!strcmp (name, "shifts"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
221 return Py_BuildValue ("(iiii)", info->vfmt->Rshift, info->vfmt->Gshift,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
222 info->vfmt->Bshift, info->vfmt->Ashift);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
223 else if (!strcmp (name, "losses"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
224 return Py_BuildValue ("(iiii)", info->vfmt->Rloss, info->vfmt->Gloss,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
225 info->vfmt->Bloss, info->vfmt->Aloss);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
226 else if (!strcmp (name, "current_h"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
227 return PyInt_FromLong (current_h);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
228 else if (!strcmp (name, "current_w"))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
229 return PyInt_FromLong (current_w);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
230
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
231 return RAISE (PyExc_AttributeError, "does not exist in vidinfo");
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
232 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
233
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
234 PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
235 vidinfo_str (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
236 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
237 char str[1024];
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
238 int current_w = -1;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
239 int current_h = -1;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
240 SDL_VideoInfo* info = &((PyVidInfoObject*) self)->info;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
241
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
242 SDL_version versioninfo;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
243 SDL_VERSION (&versioninfo);
760
6866908c2a24 Added current_h and current_w to the display.Info() object.
Rene Dudfield <renesd@gmail.com>
parents: 633
diff changeset
244
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
245 if(versioninfo.major >= 1 && versioninfo.minor >= 2
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
246 && versioninfo.patch >= 10 )
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
247 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
248 current_w = info->current_w;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
249 current_h = info->current_h;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
250 }
760
6866908c2a24 Added current_h and current_w to the display.Info() object.
Rene Dudfield <renesd@gmail.com>
parents: 633
diff changeset
251
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
252 sprintf (str, "<VideoInfo(hw = %d, wm = %d,video_mem = %d\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
253 " blit_hw = %d, blit_hw_CC = %d, blit_hw_A = %d,\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
254 " blit_sw = %d, blit_sw_CC = %d, blit_sw_A = %d,\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
255 " bitsize = %d, bytesize = %d,\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
256 " masks = (%d, %d, %d, %d),\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
257 " shifts = (%d, %d, %d, %d),\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
258 " losses = (%d, %d, %d, %d),\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
259 " current_w = %d, current_h = %d\n"
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
260 ">\n",
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
261 info->hw_available, info->wm_available, info->video_mem,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
262 info->blit_hw, info->blit_hw_CC, info->blit_hw_A,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
263 info->blit_sw, info->blit_sw_CC, info->blit_sw_A,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
264 info->vfmt->BitsPerPixel, info->vfmt->BytesPerPixel,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
265 info->vfmt->Rmask, info->vfmt->Gmask, info->vfmt->Bmask,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
266 info->vfmt->Amask,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
267 info->vfmt->Rshift, info->vfmt->Gshift, info->vfmt->Bshift,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
268 info->vfmt->Ashift,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
269 info->vfmt->Rloss, info->vfmt->Gloss, info->vfmt->Bloss,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
270 info->vfmt->Aloss,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
271 current_w, current_h);
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
272 return Text_FromUTF8 (str);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
273 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
274
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
275 static PyTypeObject PyVidInfo_Type =
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
276 {
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
277 TYPE_HEAD (NULL, 0)
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
278 "VidInfo", /*name*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
279 sizeof(PyVidInfoObject), /*basic size*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
280 0, /*itemsize*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
281 vidinfo_dealloc, /*dealloc*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
282 0, /*print*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
283 vidinfo_getattr, /*getattr*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
284 NULL, /*setattr*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
285 NULL, /*compare*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
286 vidinfo_str, /*repr*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
287 NULL, /*as_number*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
288 NULL, /*as_sequence*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
289 NULL, /*as_mapping*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
290 (hashfunc)NULL, /*hash*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
291 (ternaryfunc)NULL, /*call*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
292 (reprfunc)NULL, /*str*/
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
293 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
294
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
295 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
296 PyVidInfo_New (const SDL_VideoInfo* i)
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 PyVidInfoObject* info;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
299
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
300 if (!i)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
301 return RAISE (PyExc_SDLError, SDL_GetError ());
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
302
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
303 info = PyObject_NEW (PyVidInfoObject, &PyVidInfo_Type);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
304 if (!info)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
305 return NULL;
7
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 memcpy (&info->info, i, sizeof (SDL_VideoInfo));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
308 return (PyObject*)info;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
309 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
310
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
311 /* display functions */
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
312 static PyObject*
1557
6b581f917c95 clean up METH_NOARG functions which were accidently given a second C argument in display.c
Lenard Lindstrom <len-l@telus.net>
parents: 1553
diff changeset
313 get_driver (PyObject* self)
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
314 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
315 char buf[256];
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
316
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
317 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
318
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
319 if (!SDL_VideoDriverName (buf, sizeof (buf)))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
320 Py_RETURN_NONE;
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
321 return Text_FromUTF8 (buf);
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
322 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
323
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
324 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
325 get_wm_info (PyObject* self)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
326 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
327 PyObject *dict;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
328 PyObject *tmp;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
329 SDL_SysWMinfo info;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
330
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
331 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
332
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
333 SDL_VERSION (&(info.version))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
334 dict = PyDict_New ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
335 if (!dict || !SDL_GetWMInfo (&info))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
336 return dict;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
337
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
338 /*scary #ifdef's match SDL_syswm.h*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
339 #if (defined(unix) || defined(__unix__) || \
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
340 defined(_AIX) || defined(__OpenBSD__)) && \
1912
35e02db899ff bugzilla 29, patch to use SDL_VIDEO_DRIVER_X11 instead of DISABLE_X11. Thanks Robert A. Lerche.
Rene Dudfield <renesd@gmail.com>
parents: 1581
diff changeset
341 (defined(SDL_VIDEO_DRIVER_X11) && !defined(__CYGWIN32__) && \
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
342 !defined(ENABLE_NANOX) && !defined(__QNXNTO__))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
343
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
344 tmp = PyInt_FromLong (info.info.x11.window);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
345 PyDict_SetItemString (dict, "window", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
346 Py_DECREF (tmp);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
347
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
348 tmp = PyCapsule_New (info.info.x11.display, "display", NULL);
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
349 PyDict_SetItemString (dict, "display", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
350 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
351
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
352 tmp = PyCapsule_New (info.info.x11.lock_func, "lock_func", NULL);
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
353 PyDict_SetItemString (dict, "lock_func", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
354 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
355
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
356 tmp = PyCapsule_New (info.info.x11.unlock_func, "unlock_func", NULL);
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
357 PyDict_SetItemString (dict, "unlock_func", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
358 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
359
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
360 tmp = PyInt_FromLong (info.info.x11.fswindow);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
361 PyDict_SetItemString (dict, "fswindow", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
362 Py_DECREF (tmp);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
363
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
364 tmp = PyInt_FromLong (info.info.x11.wmwindow);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
365 PyDict_SetItemString (dict, "wmwindow", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
366 Py_DECREF (tmp);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
367
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
368 #elif defined(ENABLE_NANOX)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
369 tmp = PyInt_FromLong (info.window);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
370 PyDict_SetItemString (dict, "window", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
371 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
372 #elif defined(WIN32)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
373 tmp = PyInt_FromLong ((long)info.window);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
374 PyDict_SetItemString (dict, "window", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
375 Py_DECREF (tmp);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
376
837
0f7f5d308436 some fixes from DR0ID.
Rene Dudfield <renesd@gmail.com>
parents: 831
diff changeset
377 tmp = PyInt_FromLong ((long)info.hglrc);
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
378 PyDict_SetItemString (dict, "hglrc", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
379 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
380 #elif defined(__riscos__)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
381 tmp = PyInt_FromLong (info.window);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
382 PyDict_SetItemString (dict, "window", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
383 Py_DECREF (tmp);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
384
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
385 tmp = PyInt_FromLong (info.wimpVersion);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
386 PyDict_SetItemString (dict, "wimpVersion", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
387 Py_DECREF (tmp);
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
388
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
389 tmp = PyInt_FromLong (info.taskHandle);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
390 PyDict_SetItemString (dict, "taskHandle", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
391 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
392 #elif (defined(__APPLE__) && defined(__MACH__))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
393 /* do nothing. */
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
394 #else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
395 tmp = PyInt_FromLong (info.data);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
396 PyDict_SetItemString (dict, "data", tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
397 Py_DECREF (tmp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
398 #endif
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
399
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
400 return dict;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
401 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
402
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
403 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
404 Info (PyObject* self)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
405 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
406 const SDL_VideoInfo* info;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
407
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
408 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
409
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
410 info = SDL_GetVideoInfo ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
411 return PyVidInfo_New (info);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
412 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
413
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
414 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
415 get_surface (PyObject* self)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
416 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
417 if (!DisplaySurfaceObject)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
418 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
419
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
420 Py_INCREF (DisplaySurfaceObject);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
421 return DisplaySurfaceObject;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
422 }
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 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
425 gl_set_attribute (PyObject* self, PyObject* arg)
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
426 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
427 int flag, value, result;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
428
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
429 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
430
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
431 if (!PyArg_ParseTuple (arg, "ii", &flag, &value))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
432 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
433 if (flag == -1) /*an undefined/unsupported val, ignore*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
434 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
435
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
436 result = SDL_GL_SetAttribute (flag, value);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
437 if (result == -1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
438 return RAISE (PyExc_SDLError, SDL_GetError());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
439 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
440 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
441
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
442 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
443 gl_get_attribute (PyObject* self, PyObject* arg)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
444 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
445 int flag, value, result;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
446
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
447 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
448
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
449 if (!PyArg_ParseTuple (arg, "i", &flag))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
450 return NULL;
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
451
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
452 result = SDL_GL_GetAttribute (flag, &value);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
453 if (result == -1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
454 return RAISE (PyExc_SDLError, SDL_GetError ());
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
455
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
456 return PyInt_FromLong (value);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
457 }
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
458
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
459 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
460 set_mode (PyObject* self, PyObject* arg)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
461 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
462 SDL_Surface* surf;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
463 int depth = 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
464 int flags = SDL_SWSURFACE;
957
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
465 int w = 0;
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
466 int h = 0;
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
467 int hasbuf;
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
468 char *title, *icontitle;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
469
957
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
470 if (!PyArg_ParseTuple (arg, "|(ii)ii", &w, &h, &flags, &depth))
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
471 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
472
957
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
473 if (w < 0 || h < 0)
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
474 return RAISE (PyExc_SDLError, "Cannot set negative sized display mode");
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
475
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
476 if (w == 0 || h == 0)
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
477 {
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
478 SDL_version versioninfo;
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
479 SDL_VERSION (&versioninfo);
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
480 if (!(versioninfo.major > 1 ||
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
481 (versioninfo.major == 1 && versioninfo.minor > 2) ||
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
482 (versioninfo.major == 1 && versioninfo.minor == 2 && versioninfo.patch >= 10 )))
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
483 {
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
484 return RAISE (PyExc_SDLError, "Cannot set 0 sized display mode");
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
485 }
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
486 }
a1b08375b132 Added display.set_mode() resolution enhancement as posted by Lorenz Quack.
marcus
parents: 947
diff changeset
487
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
488 if (!SDL_WasInit (SDL_INIT_VIDEO))
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 /*note SDL works special like this too*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
491 if (!init (NULL))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
492 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
493 }
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
494
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
495 if (flags & SDL_OPENGL)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
496 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
497 if (flags & SDL_DOUBLEBUF)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
498 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
499 flags &= ~SDL_DOUBLEBUF;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
500 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
501 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
502 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
503 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
504 if (depth)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
505 SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, depth);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
506 surf = SDL_SetVideoMode (w, h, depth, flags);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
507 if (!surf)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
508 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
509
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
510 SDL_GL_GetAttribute (SDL_GL_DOUBLEBUFFER, &hasbuf);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
511 if (hasbuf)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
512 surf->flags |= SDL_DOUBLEBUF;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
513 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
514 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
515 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
516 if (!depth)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
517 flags |= SDL_ANYFORMAT;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
518 Py_BEGIN_ALLOW_THREADS;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
519 surf = SDL_SetVideoMode (w, h, depth, flags);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
520 Py_END_ALLOW_THREADS;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
521 if (!surf)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
522 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
523 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
524 SDL_WM_GetCaption (&title, &icontitle);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
525 if (!title || !*title)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
526 SDL_WM_SetCaption ("pygame window", "pygame");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
527
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
528 /*probably won't do much, but can't hurt, and might help*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
529 SDL_PumpEvents ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
530
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
531 if (DisplaySurfaceObject)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
532 ((PySurfaceObject*) DisplaySurfaceObject)->surf = surf;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
533 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
534 DisplaySurfaceObject = PySurface_New (surf);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
535
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
536 #if !defined(darwin)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
537 if (!icon_was_set)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
538 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
539 PyObject* iconsurf = display_resource (icon_defaultname);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
540 if (!iconsurf)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
541 PyErr_Clear ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
542 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
543 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
544 SDL_SetColorKey (PySurface_AsSurface (iconsurf), SDL_SRCCOLORKEY,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
545 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
546 do_set_icon (iconsurf);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
547 Py_DECREF (iconsurf);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
548 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
549 }
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
550 #endif
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
551 Py_INCREF (DisplaySurfaceObject);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
552 return DisplaySurfaceObject;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
553 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
554
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
555 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
556 mode_ok (PyObject* self, PyObject* args)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
557 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
558 int depth = 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
559 int w, h;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
560 int flags = SDL_SWSURFACE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
561
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
562 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
563
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
564 if (!PyArg_ParseTuple (args, "(ii)|ii", &w, &h, &flags, &depth))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
565 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
566 if (!depth)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
567 depth = SDL_GetVideoInfo ()->vfmt->BitsPerPixel;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
568
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
569 return PyInt_FromLong (SDL_VideoModeOK (w, h, depth, flags));
538
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
570 }
405796d52e18 wminfo and other additions
pygame
parents: 528
diff changeset
571
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
572 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
573 list_modes (PyObject* self, PyObject* args)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
574 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
575 SDL_PixelFormat format;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
576 SDL_Rect** rects;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
577 int flags=SDL_FULLSCREEN;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
578 PyObject *list, *size;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
579
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
580 format.BitsPerPixel = 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
581 if (PyTuple_Size (args)!=0
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
582 && !PyArg_ParseTuple (args, "|bi", &format.BitsPerPixel, &flags))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
583 return NULL;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
584
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
585 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
586
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
587 if (!format.BitsPerPixel)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
588 format.BitsPerPixel = SDL_GetVideoInfo ()->vfmt->BitsPerPixel;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
589
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
590 rects = SDL_ListModes (&format, flags);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
591
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
592 if(rects == (SDL_Rect**)-1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
593 return PyInt_FromLong (-1);
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 if(!(list = PyList_New (0)))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
596 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
597 if (!rects)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
598 return list;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
599
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
600 for (; *rects; ++rects)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
601 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
602 if (!(size = Py_BuildValue ("(ii)", (*rects)->w, (*rects)->h)))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
603 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
604 Py_DECREF (list);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
605 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
606 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
607 PyList_Append (list, size);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
608 Py_DECREF (size);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
609 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
610 return list;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
611 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
612
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
613 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
614 flip (PyObject* self)
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
615 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
616 SDL_Surface* screen;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
617 int status = 0;
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
618
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
619 VIDEO_INIT_CHECK ();
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
620
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
621 screen = SDL_GetVideoSurface ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
622 if (!screen)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
623 return RAISE (PyExc_SDLError, "Display mode not set");
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
624
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
625 Py_BEGIN_ALLOW_THREADS;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
626 if (screen->flags & SDL_OPENGL)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
627 SDL_GL_SwapBuffers ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
628 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
629 status = SDL_Flip (screen) == -1;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
630 Py_END_ALLOW_THREADS;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
631
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
632 if (status == -1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
633 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
634 Py_RETURN_NONE;
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
635 }
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
636
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
637 /*BAD things happen when out-of-bound rects go to updaterect*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
638 static SDL_Rect*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
639 screencroprect (GAME_Rect* r, int w, int h, SDL_Rect* cur)
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
640 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
641 if (r->x > w || r->y > h || (r->x + r->w) <= 0 || (r->y + r->h) <= 0)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
642 return 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
643 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
644 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
645 int right = MIN (r->x + r->w, w);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
646 int bottom = MIN (r->y + r->h, h);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
647 cur->x = (short) MAX (r->x, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
648 cur->y = (short) MAX (r->y, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
649 cur->w = (unsigned short) right - cur->x;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
650 cur->h = (unsigned short) bottom - cur->y;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
651 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
652 return cur;
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
653 }
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
654
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
655 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
656 update (PyObject* self, PyObject* arg)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
657 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
658 SDL_Surface* screen;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
659 GAME_Rect *gr, temp = { 0 };
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
660 int wide, high;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
661 PyObject* obj;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
662
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
663 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
664
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
665 screen = SDL_GetVideoSurface ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
666 if (!screen)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
667 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
668 wide = screen->w;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
669 high = screen->h;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
670 if (screen->flags & SDL_OPENGL)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
671 return RAISE (PyExc_SDLError, "Cannot update an OPENGL display");
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
672
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
673 /*determine type of argument we got*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
674 if (PyTuple_Size (arg) == 0)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
675 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
676 SDL_UpdateRect (screen, 0, 0, 0, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
677 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
678 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
679 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
680 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
681 obj = PyTuple_GET_ITEM (arg, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
682 if (obj == Py_None)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
683 gr = &temp;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
684 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
685 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
686 gr = GameRect_FromObject (arg, &temp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
687 if (!gr)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
688 PyErr_Clear ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
689 else if (gr != &temp)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
690 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
691 memcpy (&temp, gr, sizeof (temp));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
692 gr = &temp;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
693 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
694 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
695 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
696
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
697 if (gr)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
698 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
699 SDL_Rect sdlr;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
700 if (screencroprect (gr, wide, high, &sdlr))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
701 SDL_UpdateRect (screen, sdlr.x, sdlr.y, sdlr.w, sdlr.h);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
702 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
703 else
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
704 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
705 PyObject* seq;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
706 PyObject* r;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
707 int loop, num, count;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
708 SDL_Rect* rects;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
709 if (PyTuple_Size (arg) != 1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
710 return RAISE
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
711 (PyExc_ValueError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
712 "update requires a rectstyle or sequence of recstyles");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
713 seq = PyTuple_GET_ITEM (arg, 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
714 if (!seq || !PySequence_Check (seq))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
715 return RAISE
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
716 (PyExc_ValueError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
717 "update requires a rectstyle or sequence of recstyles");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
718
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
719 num = PySequence_Length (seq);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
720 rects = PyMem_New (SDL_Rect, num);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
721 if (!rects)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
722 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
723 count = 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
724 for (loop = 0; loop < num; ++loop)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
725 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
726 SDL_Rect* cur_rect = (rects + count);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
727
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
728 /*get rect from the sequence*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
729 r = PySequence_GetItem (seq, loop);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
730 if (r == Py_None)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
731 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
732 Py_DECREF(r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
733 continue;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
734 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
735 gr = GameRect_FromObject (r, &temp);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
736 Py_XDECREF (r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
737 if (!gr)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
738 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
739 PyMem_Free ((char*)rects);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
740 return RAISE (PyExc_ValueError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
741 "update_rects requires a single list of rects");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
742 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
743
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
744 if (gr->w < 1 && gr->h < 1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
745 continue;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
746
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
747 /*bail out if rect not onscreen*/
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
748 if (!screencroprect (gr, wide, high, cur_rect))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
749 continue;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
750
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
751 ++count;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
752 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
753
947
a0a4019a3e6c Release the GIL before updating the screen.
Rene Dudfield <renesd@gmail.com>
parents: 837
diff changeset
754 if (count) {
a0a4019a3e6c Release the GIL before updating the screen.
Rene Dudfield <renesd@gmail.com>
parents: 837
diff changeset
755 Py_BEGIN_ALLOW_THREADS;
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
756 SDL_UpdateRects (screen, count, rects);
947
a0a4019a3e6c Release the GIL before updating the screen.
Rene Dudfield <renesd@gmail.com>
parents: 837
diff changeset
757 Py_END_ALLOW_THREADS;
a0a4019a3e6c Release the GIL before updating the screen.
Rene Dudfield <renesd@gmail.com>
parents: 837
diff changeset
758 }
a0a4019a3e6c Release the GIL before updating the screen.
Rene Dudfield <renesd@gmail.com>
parents: 837
diff changeset
759
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
760 PyMem_Free ((char*)rects);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
761 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
762 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
763 }
41
479526f28311 no message
pygame
parents: 31
diff changeset
764
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
765 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
766 set_palette (PyObject* self, PyObject* args)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
767 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
768 SDL_Surface* surf;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
769 SDL_Palette* pal;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
770 SDL_Color* colors;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
771 PyObject* list, *item = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
772 int i, len;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
773 int r, g, b;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
774
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
775 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
776 if (!PyArg_ParseTuple (args, "|O", &list))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
777 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
778 surf = SDL_GetVideoSurface ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
779 if (!surf)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
780 return RAISE (PyExc_SDLError, "No display mode is set");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
781 pal = surf->format->palette;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
782 if (surf->format->BytesPerPixel != 1 || !pal)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
783 return RAISE (PyExc_SDLError, "Display mode is not colormapped");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
784
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
785 if (!list)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
786 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
787 colors = pal->colors;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
788 len = pal->ncolors;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
789 SDL_SetPalette (surf, SDL_PHYSPAL, colors, 0, len);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
790 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
791 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
792
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
793 if (!PySequence_Check (list))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
794 return RAISE (PyExc_ValueError, "Argument must be a sequence type");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
795
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
796 len = MIN (pal->ncolors, PySequence_Length (list));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
797
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
798 colors = (SDL_Color*)malloc (len * sizeof (SDL_Color));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
799 if (!colors)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
800 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
801
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
802 for (i = 0; i < len; i++)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
803 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
804 item = PySequence_GetItem (list, i);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
805 if (!PySequence_Check (item) || PySequence_Length (item) != 3)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
806 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
807 Py_DECREF (item);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
808 free ((char*)colors);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
809 return RAISE (PyExc_TypeError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
810 "takes a sequence of sequence of RGB");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
811 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
812 if(!IntFromObjIndex (item, 0, &r) || !IntFromObjIndex (item, 1, &g)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
813 || !IntFromObjIndex (item, 2, &b))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
814 return RAISE (PyExc_TypeError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
815 "RGB sequence must contain numeric values");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
816
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
817 colors[i].r = (unsigned char)r;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
818 colors[i].g = (unsigned char)g;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
819 colors[i].b = (unsigned char)b;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
820
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
821 Py_DECREF (item);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
822 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
823
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
824 SDL_SetPalette (surf, SDL_PHYSPAL, colors, 0, len);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
825
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
826 free ((char*)colors);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
827 Py_RETURN_NONE;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
828 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
829
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
830 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
831 set_gamma (PyObject* self, PyObject* arg)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
832 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
833 float r, g, b;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
834 int result;
180
567819322a6b mini updates
pygame
parents: 163
diff changeset
835
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
836 if (!PyArg_ParseTuple (arg, "f|ff", &r, &g, &b))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
837 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
838 if (PyTuple_Size (arg) == 1)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
839 g = b = r;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
840
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
841 VIDEO_INIT_CHECK ();
213
60f16a205d42 set_mode() affects previous display surfaces
pygame
parents: 189
diff changeset
842
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
843 result = SDL_SetGamma (r, g, b);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
844 return PyInt_FromLong (result == 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
845 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
846
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
847 static int
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
848 convert_to_uint16 (PyObject* python_array, Uint16* c_uint16_array)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
849 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
850 int i;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
851 PyObject* item;
381
2c5caf0b356a add set_gamma_ramp
pygame
parents: 380
diff changeset
852
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
853 if (!c_uint16_array)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
854 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
855 RAISE (PyExc_RuntimeError, "Memory not allocated for c_uint16_array.");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
856 return 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
857 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
858
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
859 if (!PySequence_Check (python_array))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
860 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
861 RAISE (PyExc_TypeError, "Array must be sequence type");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
862 return 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
863 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
864
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
865 if (PySequence_Size (python_array) != 256)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
866 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
867 RAISE (PyExc_ValueError, "gamma ramp must be 256 elements long");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
868 return 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
869 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
870 for (i = 0; i < 256; i++)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
871 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
872 item = PySequence_GetItem (python_array, i);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
873 if(!PyInt_Check (item))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
874 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
875 RAISE (PyExc_ValueError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
876 "gamma ramp must contain integer elements");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
877 return 0;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
878 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
879 c_uint16_array[i] = (Uint16)PyInt_AsLong (item);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
880 Py_XDECREF (item);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
881 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
882 return 1;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
883 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
884
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
885
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
886 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
887 set_gamma_ramp (PyObject* self, PyObject* arg)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
888 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
889 Uint16 *r, *g, *b;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
890 int result;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
891
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
892 r = (Uint16 *) malloc (256 * sizeof (Uint16));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
893 if (!r)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
894 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
895 g = (Uint16 *) malloc (256 * sizeof (Uint16));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
896 if (!g)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
897 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
898 free (r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
899 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
900 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
901 b = (Uint16 *) malloc (256 * sizeof (Uint16));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
902 if (!b)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
903 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
904 free (r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
905 free (g);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
906 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
907 }
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
908
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
909 if(!PyArg_ParseTuple (arg, "O&O&O&",
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
910 convert_to_uint16, r,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
911 convert_to_uint16, g,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
912 convert_to_uint16, b))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
913 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
914 free (r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
915 free (g);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
916 free (b);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
917 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
918 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
919
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
920 VIDEO_INIT_CHECK ();
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
921
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
922 result = SDL_SetGammaRamp (r, g, b);
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
923
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
924 free ((char*)r);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
925 free ((char*)g);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
926 free ((char*)b);
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
927
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
928 return PyInt_FromLong (result == 0);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
929 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
930
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
931 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
932 set_caption (PyObject* self, PyObject* arg)
189
a59dccb8da6b added pygame.display.set_palette()
pygame
parents: 181
diff changeset
933 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
934 char* title, *icontitle=NULL;
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
935
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
936 if (!PyArg_ParseTuple (arg, "s|s", &title, &icontitle))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
937 return NULL;
189
a59dccb8da6b added pygame.display.set_palette()
pygame
parents: 181
diff changeset
938
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
939 if (!icontitle)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
940 icontitle = title;
189
a59dccb8da6b added pygame.display.set_palette()
pygame
parents: 181
diff changeset
941
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
942 SDL_WM_SetCaption (title, icontitle);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
943 Py_RETURN_NONE;
189
a59dccb8da6b added pygame.display.set_palette()
pygame
parents: 181
diff changeset
944 }
a59dccb8da6b added pygame.display.set_palette()
pygame
parents: 181
diff changeset
945
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
946 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
947 get_caption (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
948 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
949 char* title, *icontitle;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
950
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
951 SDL_WM_GetCaption (&title, &icontitle);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
952
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
953 if (title && *title)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
954 return Py_BuildValue ("(ss)", title, icontitle);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
955
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
956 return Py_BuildValue ("()");
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
957 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
958
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
959 static void
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
960 do_set_icon (PyObject *surface)
381
2c5caf0b356a add set_gamma_ramp
pygame
parents: 380
diff changeset
961 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
962 SDL_Surface* surf = PySurface_AsSurface (surface);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
963 SDL_WM_SetIcon (surf, NULL);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
964 icon_was_set = 1;
381
2c5caf0b356a add set_gamma_ramp
pygame
parents: 380
diff changeset
965 }
2c5caf0b356a add set_gamma_ramp
pygame
parents: 380
diff changeset
966
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
967 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
968 set_icon (PyObject* self, PyObject* arg)
381
2c5caf0b356a add set_gamma_ramp
pygame
parents: 380
diff changeset
969 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
970 PyObject* surface;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
971 if (!PyArg_ParseTuple (arg, "O!", &PySurface_Type, &surface))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
972 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
973 if (!PyGame_Video_AutoInit ())
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
974 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
975 do_set_icon (surface);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
976 Py_RETURN_NONE;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
977 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
978
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
979 static PyObject*
1557
6b581f917c95 clean up METH_NOARG functions which were accidently given a second C argument in display.c
Lenard Lindstrom <len-l@telus.net>
parents: 1553
diff changeset
980 iconify (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
981 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
982 int result;
475
b35f4a2923b4 gl fsaa flags
pygame
parents: 424
diff changeset
983
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
984 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
985 result = SDL_WM_IconifyWindow ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
986 return PyInt_FromLong (result != 0);
569
0a515196309e reorder display code
bob
parents: 565
diff changeset
987 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
988
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
989 static PyObject*
1557
6b581f917c95 clean up METH_NOARG functions which were accidently given a second C argument in display.c
Lenard Lindstrom <len-l@telus.net>
parents: 1553
diff changeset
990 toggle_fullscreen (PyObject* self)
224
ba9dde2ce42c much work on surfaces
pygame
parents: 221
diff changeset
991 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
992 SDL_Surface* screen;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
993 int result;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
994
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
995 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
996 screen = SDL_GetVideoSurface ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
997 if (!screen)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
998 return RAISE (PyExc_SDLError, SDL_GetError ());
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
999
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1000 result = SDL_WM_ToggleFullScreen (screen);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1001 return PyInt_FromLong (result != 0);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1002 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1003
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1004 static PyMethodDef _display_methods[] =
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1005 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1006 { "__PYGAMEinit__", display_autoinit, 1,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1007 "auto initialize function for display." },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1008 { "init", (PyCFunction) init, METH_NOARGS, DOC_PYGAMEDISPLAYINIT },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1009 { "quit", (PyCFunction) quit, METH_NOARGS, DOC_PYGAMEDISPLAYQUIT },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1010 { "get_init", (PyCFunction) get_init, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1011 DOC_PYGAMEDISPLAYGETINIT },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1012 { "get_active", (PyCFunction) get_active, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1013 DOC_PYGAMEDISPLAYGETACTIVE },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1014
31
de760341a17a cdrom module rewritten
pygame
parents: 29
diff changeset
1015 /* { "set_driver", set_driver, 1, doc_set_driver },*/
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1016 { "get_driver", (PyCFunction) get_driver, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1017 DOC_PYGAMEDISPLAYGETDRIVER },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1018 { "get_wm_info", (PyCFunction) get_wm_info, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1019 DOC_PYGAMEDISPLAYGETWMINFO },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1020 { "Info", (PyCFunction) Info, METH_NOARGS, DOC_PYGAMEDISPLAYINFO },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1021 { "get_surface", (PyCFunction) get_surface, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1022 DOC_PYGAMEDISPLAYGETSURFACE },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1023
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1024 { "set_mode", set_mode, METH_VARARGS, DOC_PYGAMEDISPLAYSETMODE },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1025 { "mode_ok", mode_ok, METH_VARARGS, DOC_PYGAMEDISPLAYMODEOK },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1026 { "list_modes", list_modes, METH_VARARGS, DOC_PYGAMEDISPLAYLISTMODES },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1027
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1028 { "flip", (PyCFunction) flip, METH_NOARGS, DOC_PYGAMEDISPLAYFLIP },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1029 { "update", update, METH_VARARGS, DOC_PYGAMEDISPLAYUPDATE },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1030
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1031 { "set_palette", set_palette, METH_VARARGS, DOC_PYGAMEDISPLAYSETPALETTE },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1032 { "set_gamma", set_gamma, METH_VARARGS, DOC_PYGAMEDISPLAYSETGAMMA },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1033 { "set_gamma_ramp", set_gamma_ramp, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1034 DOC_PYGAMEDISPLAYSETGAMMARAMP },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1035
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1036 { "set_caption", set_caption, METH_VARARGS, DOC_PYGAMEDISPLAYSETCAPTION },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1037 { "get_caption", (PyCFunction) get_caption, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1038 DOC_PYGAMEDISPLAYGETCAPTION },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1039 { "set_icon", set_icon, METH_VARARGS, DOC_PYGAMEDISPLAYSETICON },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1040
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1041 { "iconify", (PyCFunction) iconify, METH_NOARGS, DOC_PYGAMEDISPLAYICONIFY },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1042 { "toggle_fullscreen", (PyCFunction) toggle_fullscreen, METH_NOARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1043 DOC_PYGAMEDISPLAYTOGGLEFULLSCREEN },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1044
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1045 { "gl_set_attribute", gl_set_attribute, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1046 DOC_PYGAMEDISPLAYGLSETATTRIBUTE },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1047 { "gl_get_attribute", gl_get_attribute, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1048 DOC_PYGAMEDISPLAYGLGETATTRIBUTE },
370
14d423681804 new gl attributes
pygame
parents: 365
diff changeset
1049
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1050 { NULL, NULL, 0, NULL }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1051 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1052
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1053
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1054 MODINIT_DEFINE (display)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1055 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1056 PyObject *module, *dict, *apiobj;
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1057 int ecode;
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1058 static void* c_api[PYGAMEAPI_DISPLAY_NUMSLOTS];
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1059
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1060 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1061 static struct PyModuleDef _module = {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1062 PyModuleDef_HEAD_INIT,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1063 "display",
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1064 DOC_PYGAMEDISPLAY,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1065 -1,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1066 _display_methods,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1067 NULL, NULL, NULL, NULL
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1068 };
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1069 #endif
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1070
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1071 /* 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: 957
diff changeset
1072 the module is not loaded.
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1073 */
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1074 import_pygame_base ();
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1075 if (PyErr_Occurred ()) {
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
1076 MODINIT_ERROR;
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1077 }
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1078 import_pygame_rect ();
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1079 if (PyErr_Occurred ()) {
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
1080 MODINIT_ERROR;
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1081 }
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1082 import_pygame_surface ();
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1083 if (PyErr_Occurred ()) {
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
1084 MODINIT_ERROR;
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1085 }
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1086
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 957
diff changeset
1087 /* type preparation */
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1088 if (PyType_Ready (&PyVidInfo_Type) < 0) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1089 MODINIT_ERROR;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1090 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1091
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1092 /* create the module */
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1093 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1094 module = PyModule_Create (&_module);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1095 #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: 1557
diff changeset
1096 module = Py_InitModule3 (MODPREFIX "display",
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: 1557
diff changeset
1097 _display_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: 1557
diff changeset
1098 DOC_PYGAMEDISPLAY);
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1099 #endif
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1100 if (module == NULL) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1101 MODINIT_ERROR;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1102 }
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1103 dict = PyModule_GetDict (module);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1104
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1105 /* export the c api */
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1106 c_api[0] = &PyVidInfo_Type;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
1107 c_api[1] = PyVidInfo_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
1108 apiobj = encapsulate_api (c_api, "display");
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1109 if (apiobj == NULL) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1110 DECREF_MOD (module);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1111 MODINIT_ERROR;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1112 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1113 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
1114 Py_DECREF (apiobj);
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1115 if (ecode) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1116 DECREF_MOD (module);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1117 MODINIT_ERROR;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1118 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
1119 MODINIT_RETURN (module);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1120 }