Welcome to mirror list, hosted at ThFree Co, Russian Federation.

idle.cpp « common - dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 6cf5f970ff53f33e3cd834da0a970e42a6135701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/scrnsaver.h>
#include <gdk/gdkx.h>
#include <python2.3/Python.h>

#include <gtk/gtk.h>

static PyObject * idle_init(PyObject *self, PyObject *args) {
	gtk_init (NULL, NULL);
	Py_INCREF(Py_None);
	return Py_None;
}

static PyObject * idle_getIdleSec(PyObject *self, PyObject *args) {
	static XScreenSaverInfo *mit_info = NULL;
	int idle_time, event_base, error_base;

	gtk_init (NULL, NULL);
	if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
		if (mit_info == NULL) {
			mit_info = XScreenSaverAllocInfo();
		}
		XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
		idle_time = (mit_info->idle) / 1000;
	}
	else
		idle_time = 0;
	return Py_BuildValue("i", idle_time);
}

static PyObject * idle_close(PyObject *self, PyObject *args) {
	gtk_main_quit ();
	Py_INCREF(Py_None);
	return Py_None;
}

static PyMethodDef idleMethods[] = {
	{"init",  idle_init, METH_VARARGS, "init gtk"},
	{"getIdleSec",  idle_getIdleSec, METH_VARARGS, "Give the idle time in secondes"},
	{"close",  idle_close, METH_VARARGS, "close gtk"},
	{NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
initidle(void)
{
	    (void) Py_InitModule("idle", idleMethods);
}