X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=otk_c%2Fdisplay.c;h=c0cae13cb07f5c37cbdd9bc5db25c7ad170aee11;hb=8eed9d643c9cde6cba0c948aa5fa6756ed1b5d97;hp=47b1191ff96a9c1dec36e31991fd01e7b98ab5f5;hpb=79ce13073b82b5144b114fc388d0be53835957a8;p=chaz%2Fopenbox diff --git a/otk_c/display.c b/otk_c/display.c index 47b1191f..c0cae13c 100644 --- a/otk_c/display.c +++ b/otk_c/display.c @@ -1,4 +1,4 @@ -// -*- mode: C; indent-tabs-mode: nil; -*- +// -*- mode: C; indent-tabs-mode: nil; c-basic-offset: 2; -*- #include "../config.h" #include "display.h" @@ -33,7 +33,9 @@ extern PyTypeObject OtkDisplay_Type; 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; @@ -117,14 +119,15 @@ line argument.\n\n")); 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) @@ -145,8 +148,8 @@ void OtkDisplay_Ungrab(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); }