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));
for (i = 0; i < ScreenCount(self->display); ++i)
PyList_SetItem(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)
XUngrabServer(self->display);
}
+OtkScreenInfo *OtkDisplay_ScreenInfo(OtkDisplay *self, int num)
+{
+ PyObject *py = PyList_GetItem(self->screenInfoList, num);
+ return (OtkScreenInfo*) py;
+}
static PyObject *otkdisplay_grab(OtkDisplay* self, PyObject* args)
static void otkdisplay_dealloc(PyObject* self)
{
XCloseDisplay(((OtkDisplay*) self)->display);
- PyObject_Del(((OtkDisplay*) self)->screenInfoList);
+ Py_DECREF(((OtkDisplay*) self)->screenInfoList);
PyObject_Del(self);
}