-// -*- mode: C; indent-tabs-mode: nil; -*-
+// -*- mode: C; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#include "../config.h"
#include "display.h"
static int xerrorHandler(Display *d, XErrorEvent *e);
-PyObject *OtkDisplay_New(char *name)
+struct OtkDisplay *OBDisplay = NULL;
+
+void OtkDisplay_Initialize(char *name)
{
OtkDisplay* self;
PyObject *disp_env;
self->mask_list[6] = ScrollLockMask | NumLockMask;
self->mask_list[7] = ScrollLockMask | LockMask | NumLockMask;
+ // set the global var, for the new screeninfo's
+ OBDisplay = self;
+
// Get information on all the screens which are available.
- self->screenInfoList = PyList_New(ScreenCount(self->display));
+ self->screenInfoList = (PyListObject*)PyList_New(ScreenCount(self->display));
for (i = 0; i < ScreenCount(self->display); ++i)
- PyList_SetItem(self->screenInfoList, i, OtkScreenInfo_New(i));
+ PyList_SetItem((PyObject*)self->screenInfoList, i, OtkScreenInfo_New(i));
- self->gccache = OtkGCCache_New(PyList_Size(self->screenInfoList));
-
- return (PyObject*)self;
+ Py_INCREF(OBDisplay); // make sure it stays around!!
}
void OtkDisplay_Grab(OtkDisplay *self)
OtkScreenInfo *OtkDisplay_ScreenInfo(OtkDisplay *self, int num)
{
- PyObject *py = PyList_GetItem(self->screenInfoList, num);
- return (OtkScreenInfo*) py;
+ assert(num >= 0);
+ return (OtkScreenInfo*)PyList_GetItem((PyObject*)self->screenInfoList, num);
}