]> Dogcows Code - chaz/openbox/blobdiff - otk_c/display.c
add font
[chaz/openbox] / otk_c / display.c
index ab193437875acc075f747901e785fc6bce4c4c10..081655e9d8d9a5bc3619c69dcce35fcdfd1b3413 100644 (file)
@@ -1,6 +1,8 @@
 // -*- mode: C; indent-tabs-mode: nil; -*-
 
+#include "../config.h"
 #include "display.h"
+#include "screeninfo.h"
 
 #include <X11/keysym.h>
 
@@ -31,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;
@@ -115,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_Append(self->screenInfoList, 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)
@@ -141,6 +146,11 @@ void OtkDisplay_Ungrab(OtkDisplay *self)
     XUngrabServer(self->display);
 }
 
+OtkScreenInfo *OtkDisplay_ScreenInfo(OtkDisplay *self, int num)
+{
+  PyObject *py = PyList_GetItem((PyObject*)self->screenInfoList, num);
+  return (OtkScreenInfo*) py;
+}
 
 
 static PyObject *otkdisplay_grab(OtkDisplay* self, PyObject* args)
@@ -172,7 +182,7 @@ static PyMethodDef get_methods[] = {
 static void otkdisplay_dealloc(PyObject* self)
 {
   XCloseDisplay(((OtkDisplay*) self)->display);
-  PyObject_Del(((OtkDisplay*) self)->screenInfoList);
+  Py_DECREF(((OtkDisplay*) self)->screenInfoList);
   PyObject_Del(self);
 }
 
This page took 0.025442 seconds and 4 git commands to generate.