summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-12-21 12:39:49 +0000
committerDana Jansens <danakj@orodu.net>2002-12-21 12:39:49 +0000
commit0820c5100d7ea8daed00e7b1bf183edc9414728f (patch)
tree61111c19b7c4e98e3f7a96248cb1371c7d05a18c
parent9e4d1bbabcabef13b740dd7201e35c3314abfbee (diff)
make rect a proper pyobject. use "typesafety"
-rw-r--r--otk_c/display.c6
-rw-r--r--otk_c/display.h2
-rw-r--r--otk_c/rect.h3
-rw-r--r--otk_c/screeninfo.c20
-rw-r--r--otk_c/screeninfo.h6
5 files changed, 20 insertions, 17 deletions
diff --git a/otk_c/display.c b/otk_c/display.c
index 016aa948..081655e9 100644
--- a/otk_c/display.c
+++ b/otk_c/display.c
@@ -123,9 +123,9 @@ line argument.\n\n"));
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));
Py_INCREF(OBDisplay); // make sure it stays around!!
}
@@ -148,7 +148,7 @@ void OtkDisplay_Ungrab(OtkDisplay *self)
OtkScreenInfo *OtkDisplay_ScreenInfo(OtkDisplay *self, int num)
{
- PyObject *py = PyList_GetItem(self->screenInfoList, num);
+ PyObject *py = PyList_GetItem((PyObject*)self->screenInfoList, num);
return (OtkScreenInfo*) py;
}
diff --git a/otk_c/display.h b/otk_c/display.h
index f13c52fb..aa55e0b9 100644
--- a/otk_c/display.h
+++ b/otk_c/display.h
@@ -35,7 +35,7 @@ typedef struct OtkDisplay {
int grab_count;
//! A list of information for all screens on the display
- PyObject *screenInfoList; // PyListObject
+ PyListObject *screenInfoList;
} OtkDisplay;
//! Opens the X display, and sets the global OBDisplay variable
diff --git a/otk_c/rect.h b/otk_c/rect.h
index 50547b57..c32daa7a 100644
--- a/otk_c/rect.h
+++ b/otk_c/rect.h
@@ -4,7 +4,8 @@
#include <Python.h>
-typedef struct {
+typedef struct OtkRect {
+ PyObject_HEAD
int x, y, width, height;
} OtkRect;
diff --git a/otk_c/screeninfo.c b/otk_c/screeninfo.c
index 3d253d1b..9b0c49ae 100644
--- a/otk_c/screeninfo.c
+++ b/otk_c/screeninfo.c
@@ -25,11 +25,11 @@ PyObject *OtkScreenInfo_New(int num)
self->screen = num;
self->root_window = RootWindow(OBDisplay->display, self->screen);
- self->rect = OtkRect_New(0, 0,
- WidthOfScreen(ScreenOfDisplay(OBDisplay->display,
- self->screen)),
- HeightOfScreen(ScreenOfDisplay(OBDisplay->display,
- self->screen)));
+ self->rect = (OtkRect*)
+ OtkRect_New(0, 0, WidthOfScreen(ScreenOfDisplay(OBDisplay->display,
+ self->screen)),
+ HeightOfScreen(ScreenOfDisplay(OBDisplay->display,
+ self->screen)));
/*
If the default depth is at least 8 we will use that,
@@ -78,16 +78,16 @@ PyObject *OtkScreenInfo_New(int num)
}
// get the default display string and strip the screen number
- self->display_string =
+ self->display_string = (PyStringObject*)
PyString_FromFormat("DISPLAY=%s",DisplayString(OBDisplay->display));
- dstr = PyString_AsString(self->display_string);
+ dstr = PyString_AsString((PyObject*)self->display_string);
dstr2 = strrchr(dstr, '.');
if (dstr2) {
PyObject *str;
- _PyString_Resize(&self->display_string, dstr2 - dstr);
+ _PyString_Resize((PyObject**)&self->display_string, dstr2 - dstr);
str = PyString_FromFormat(".%d", self->screen);
- PyString_Concat(&self->display_string, str);
+ PyString_Concat((PyObject**)&self->display_string, str);
}
#ifdef XINERAMA
@@ -142,7 +142,7 @@ static PyObject *otkscreeninfo_getscreen(OtkScreenInfo* self, PyObject* args)
return PyInt_FromLong(self->screen);
}
-static PyObject *otkscreeninfo_getrect(OtkScreenInfo* self, PyObject* args)
+static OtkRect *otkscreeninfo_getrect(OtkScreenInfo* self, PyObject* args)
{
if (!PyArg_ParseTuple(args, ":getRect"))
return NULL;
diff --git a/otk_c/screeninfo.h b/otk_c/screeninfo.h
index 3a330f57..1a4aaea0 100644
--- a/otk_c/screeninfo.h
+++ b/otk_c/screeninfo.h
@@ -7,6 +7,8 @@
extern PyTypeObject OtkScreenInfo_Type;
+struct OtkRect;
+
typedef struct OtkScreenInfo {
int screen;
Window root_window;
@@ -15,8 +17,8 @@ typedef struct OtkScreenInfo {
Visual *visual;
Colormap colormap;
- PyObject *display_string; // PyStringObject
- PyObject *rect; // OtkRect
+ PyStringObject *display_string;
+ struct OtkRect *rect; // OtkRect
#ifdef XINERAMA
PyObject *xinerama_areas; // PyListObject[OtkRect]
Bool xinerama_active;