コード例 #1
0
ファイル: netpaint.c プロジェクト: davidelarsson/NetPaint
int init_netpaint(char* ip, char* port)
{

	repaint_context_t *repaint_context = init_repaint_context();
	int sfd;
	if((sfd = init_network(ip, atoi(port))) < 0)
	{
		printf("ERROR! Could not initialize network!\n");
		return -1;
	}
	if(ready_read(sfd, repaint_context) < 0)
	{
		printf("ERROR! Could not get the first canvas!\n");
		return -1;
	}
	repaint_context->canvas = repaint_context->canvases[0];
	repaint_context->sfd = sfd;
		
	tool_contexts_t *tool_contexts = init_tool_contexts(repaint_context);

	event_loop(sfd, repaint_context, tool_contexts);

	XCloseDisplay(repaint_context->display);
	(void) ip;
	(void) port;
	return 0;
}
コード例 #2
0
ファイル: netpaint.c プロジェクト: davidelarsson/NetPaint
int event_loop(int sfd, repaint_context_t *repaint_context, tool_contexts_t *tool_contexts)
{

        /* select kind of events we are interested in */
        XSelectInput(repaint_context->display, repaint_context->window,
		(ExposureMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask |
		 PointerMotionMask | StructureNotifyMask));

        XMapWindow(repaint_context->display, repaint_context->window);
	int win_fd = ConnectionNumber(repaint_context->display);

	fd_set fds_list;
	fd_set fds_tmp;
	FD_ZERO(&fds_list);
	FD_SET(sfd, &fds_list);
	FD_SET(win_fd, &fds_list);

	int fdmax = FD_SETSIZE;

	/* FIXME!!! Why do I need to call this before the loop?
	   Is it because the XMapWindow() call? But why isn't that
	   just put into the queue?
	 */
	handle_xevent(repaint_context, tool_contexts);

	int break_flag = 0;
	while(break_flag != 1)
	{
		fds_tmp = fds_list;
		if(select(fdmax + 1, &fds_tmp, NULL, NULL, NULL) == -1)
		{
			printf("select() error: %s\n", strerror(errno));
			close(sfd);
			return -1;
		}
		if(FD_ISSET(win_fd, &fds_tmp))
		{
 			if(handle_xevent(repaint_context, tool_contexts) == 1)
			{
				printf("Quitting...\n");
				break_flag = 1;
			}
		}
		if(FD_ISSET(sfd, &fds_tmp))
		{
			printf("Network event received!\n");
			if(ready_read(sfd, repaint_context) != 0)
			{
				printf("Error received from server!\n");
				close(sfd);
				return -1;
			}
			/* FIXME!!! Uh-gly! Do I really need this?! */
			repaint(repaint_context);
			handle_xevent(repaint_context, tool_contexts);
		}
	}
	return 0;
}
コード例 #3
0
AudioDataSocket::AudioDataSocket(const QString &aud, QObject *parent)
    :DataSocket(parent), aud(aud)
{
    stop_sending = false;

    connect(this, SIGNAL(readyRead()), this, SLOT(ready_read()));

    auddev = new AudioDevice(aud);
    if((-1 == auddev->open_device()) || (-1 == auddev->init_device()))
    {
        perror("open device");
        exit(EXIT_FAILURE);
    }
//    emit readyRead();
}
コード例 #4
0
int fortosi_sel::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QDialog::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: new_fortosi(); break;
        case 1: progress_fortosi(); break;
        case 2: retransmit_fortosi(); break;
        case 3: ready_read(); break;
        default: ;
        }
        _id -= 4;
    }
    return _id;
}
コード例 #5
0
ファイル: http.cpp プロジェクト: alheio/blizzard
bool blizzard::http::ready()const
{
	return ready_read() || ready_write();
}