summaryrefslogtreecommitdiff
path: root/base/src/display_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/display_test.c')
-rw-r--r--base/src/display_test.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/base/src/display_test.c b/base/src/display_test.c
new file mode 100644
index 000000000..3fbff3abc
--- /dev/null
+++ b/base/src/display_test.c
@@ -0,0 +1,78 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "Python.h"
+
+#ifdef HAVE_X11
+#include "X11/X.h"
+#include "X11/Xlib.h"
+#endif
+
+static
+int have_x11(void) {
+#ifdef HAVE_X11
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+static
+int try_XOpenDisplay(const char* display_name) {
+#ifdef HAVE_X11
+ Display* display = XOpenDisplay(display_name);
+ if (display==NULL) {
+ return 0;
+ } else {
+ XCloseDisplay(display);
+ return 1;
+ }
+#else
+ return 0;
+#endif
+}
+
+static char have_x11_doc[] = "have_x11() -> bool";
+
+static PyObject *have_x11_wrap(PyObject *self, PyObject *args) {
+ int result = 0;
+
+ if (!PyArg_ParseTuple(args,":display_test.try_XOpenDisplay"))
+ return NULL;
+ result = have_x11();
+ return Py_BuildValue("i",result);
+}
+
+static char try_XOpenDisplay_doc[] = "try_XOpenDisplay([display_name]) -> bool";
+
+static PyObject *try_XOpenDisplay_wrap(PyObject *self,
+ PyObject *args,
+ PyObject *keywds) {
+ int result = 0;
+ char* display_name = NULL;
+ static char *kwlist[] = {"display_name",NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args,keywds,\
+ "|s:display_test.try_XOpenDisplay",kwlist,&display_name))
+ return NULL;
+ result = try_XOpenDisplay(display_name);
+ return Py_BuildValue("i",result);
+}
+
+static PyMethodDef module_methods[] = {
+ {"have_x11",have_x11_wrap,METH_VARARGS,have_x11_doc},
+ {"try_XOpenDisplay",try_XOpenDisplay_wrap,METH_VARARGS | METH_KEYWORDS,
+ try_XOpenDisplay_doc},
+ {NULL,NULL}
+};
+
+DL_EXPORT(void) initdisplay_test(void) {
+ Py_InitModule("display_test", module_methods);
+ if (PyErr_Occurred())
+ Py_FatalError("can't initialize module display_test");
+}
+
+#ifdef __cplusplus
+}
+#endif