~ubuntu-branches/ubuntu/maverick/pygame/maverick

« back to all changes in this revision

Viewing changes to src/surflock.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2010-01-14 17:02:11 UTC
  • mfrom: (1.3.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100114170211-21eop2ja7mr9vdcr
Tags: 1.9.1release-0ubuntu1
* New upstream version (lp: #433304)
* debian/control:
  - build-depends on libportmidi-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 */
27
27
#define PYGAMEAPI_SURFLOCK_INTERNAL
28
28
#include "pygame.h"
 
29
#include "pgcompat.h"
29
30
 
30
31
static int PySurface_Lock (PyObject* surfobj);
31
32
static int PySurface_Unlock (PyObject* surfobj);
88
89
        return 0;
89
90
    }
90
91
    PyList_Append (surf->locklist, ref);
 
92
    Py_DECREF (ref);
91
93
 
92
94
    if (surf->subsurface)
93
95
        PySurface_Prep (surfobj);
158
160
 
159
161
static PyTypeObject PyLifetimeLock_Type =
160
162
{
161
 
    PyObject_HEAD_INIT(NULL)
162
 
    0,                          /*size*/
 
163
    TYPE_HEAD (NULL, 0)
163
164
    "SurfLifeLock",             /*name*/
164
165
    sizeof(PyLifetimeLock),     /*basic size*/
165
166
    0,                          /* tp_itemsize */
241
242
    return (PyObject*) life;
242
243
}
243
244
 
244
 
static PyMethodDef surflock__builtins__[] =
 
245
static PyMethodDef _surflock_methods[] =
245
246
{
246
247
    { NULL, NULL, 0, NULL }
247
248
};
248
249
 
249
 
PYGAME_EXPORT
250
 
void initsurflock (void)
 
250
/*DOC*/ static char _surflock_doc[] =
 
251
/*DOC*/     "Surface locking support";
 
252
 
 
253
MODINIT_DEFINE (surflock)
251
254
{
252
255
    PyObject *module, *dict, *apiobj;
 
256
    int ecode;
253
257
    static void* c_api[PYGAMEAPI_SURFLOCK_NUMSLOTS];
254
258
    
255
 
    PyType_Init (PyLifetimeLock_Type);
 
259
#if PY3
 
260
    static struct PyModuleDef _module = {
 
261
        PyModuleDef_HEAD_INIT,
 
262
        "surflock",
 
263
        _surflock_doc,
 
264
        -1,
 
265
        _surflock_methods,
 
266
        NULL, NULL, NULL, NULL
 
267
    };
 
268
#endif
 
269
 
 
270
    if (PyType_Ready (&PyLifetimeLock_Type) < 0) {
 
271
        MODINIT_ERROR;
 
272
    }
256
273
 
257
274
    /* Create the module and add the functions */
258
 
    module = Py_InitModule3 ("surflock", surflock__builtins__,
259
 
                             "Surface locking support");
 
275
#if PY3
 
276
    module = PyModule_Create (&_module);
 
277
#else
 
278
    module = Py_InitModule3 (MODPREFIX "surflock", 
 
279
                             _surflock_methods, 
 
280
                             _surflock_doc);
 
281
#endif
 
282
    if (module == NULL) {
 
283
        MODINIT_ERROR;
 
284
    }
260
285
    dict = PyModule_GetDict (module);
261
286
    
262
287
    /* export the c api */
269
294
    c_api[6] = PySurface_UnlockBy;
270
295
    c_api[7] = PySurface_LockLifetime;
271
296
    apiobj = PyCObject_FromVoidPtr (c_api, NULL);
272
 
    PyDict_SetItemString (dict, PYGAMEAPI_LOCAL_ENTRY, apiobj);
 
297
    if (apiobj == NULL) {
 
298
        DECREF_MOD (module);
 
299
        MODINIT_ERROR;
 
300
    }
 
301
    ecode = PyDict_SetItemString (dict, PYGAMEAPI_LOCAL_ENTRY, apiobj);
273
302
    Py_DECREF (apiobj);
 
303
    if (ecode) {
 
304
        DECREF_MOD (module);
 
305
        MODINIT_ERROR;
 
306
    }
 
307
    MODINIT_RETURN (module);
274
308
}