Exemplo n.º 1
0
static void chk_handler(GtkToggleButton *bn, void *data)
{
	int which = (int)data;
	int state = gtk_toggle_button_get_active(bn);

	if(which < 6) {
		cfg.invert[which] = state;
		update_cfg();
	}

	if(which == 10) {
		cfg.led = state;
		update_cfg();
	}
}
Exemplo n.º 2
0
Arquivo: back.c Projeto: 5263/spacenav
int backend(int pfd)
{
	signal(SIGTERM, sig);

	for(;;) {
		ssize_t res;
		int cmd, tmp;

		/* get command */
		cmd = 0;
		if(read(pfd, &cmd, 1) == -1 && errno != EINTR) {
			perror("pipe read blew up in my face! wtf");
			return -1;
		}

		switch(cmd) {
		case CMD_PING:
			tmp = (dpid = get_daemon_pid()) != -1;
			write(pfd, &tmp, 1);
			break;

		case CMD_CFG:
			{
				char *buf = (char*)&cfg;
				int sz = sizeof cfg;

				while(sz && (res = read(pfd, buf, sz)) > 0) {
					buf += res;
					sz -= res;
				}
				update_cfg();
			}
			break;

		case CMD_STARTX:
		case CMD_STOPX:
			if(dpid == -1) {
				if((dpid = get_daemon_pid()) == -1) {
					return -1;
				}
			}
			if(kill(dpid, cmd == CMD_STARTX ? SIGUSR1 : SIGUSR2) == -1) {
				if(errno != EPERM) {
					dpid = -1;
					kill(getppid(), SIGUSR2);
				}
			}
			break;

		default:
			fprintf(stderr, "unknown CMD: %d\n", (int)cmd);
			break;
		}
	}

	return 0;
}
Exemplo n.º 3
0
static void slider_handler(GtkRange *rng, void *data)
{
	cfg.sensitivity = gtk_range_get_value(rng);
	update_cfg();
}