Exemplo n.º 1
0
int main(int argc, char** argv){
	struct timespec t = {.tv_sec=0};
	struct timespec lastTime = {.tv_sec = 0, .tv_nsec = 0};
	struct timespec otherTime = {.tv_sec = 0, .tv_nsec = 0};
	SDL_Event evnt;

	if(argc < 2){
		puts("Please specify an ip.");
		return 5;
	}
	if(initView){
		puts("no SDL2 window");
		return 1;
	}
	initNetwork(argv[1], 1212);
	char test[10];
	test[0] = 0;
	sendto(sockfd, test, 10, 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
	sendto(sockfd, test, 10, 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
	while(running){
		netListen();
		while(SDL_PollEvent(&evnt)){
			if(evnt.type == SDL_KEYDOWN){
				if(!keyAction(evnt.key.keysym.sym, 1)){
					test[0] = 1;
					sendto(sockfd, test, 10, 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
				}
			}else if(evnt.type == SDL_KEYUP){
				if(!keyAction(evnt.key.keysym.sym, 0)){
					test[0] = 1;
					sendto(sockfd, test, 10, 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
				}
			}else if(evnt.type == SDL_QUIT){
				running = 0;
			}
		}
		clock_gettime(CLOCK_MONOTONIC, &otherTime);
		int32_t sleep = (int32_t)(1000000000/50) - (otherTime.tv_nsec-lastTime.tv_nsec) - 1000000001*(otherTime.tv_sec-lastTime.tv_sec);
		if(sleep > 0){
			t.tv_nsec = sleep;
			nanosleep(&t, NULL);
		}
		clock_gettime(CLOCK_MONOTONIC, &lastTime);
	}
	SDL_DestroyRenderer(render);
	SDL_DestroyWindow(window);
	SDL_Quit();
	return 0;
}
Exemplo n.º 2
0
	void ScrollPane::keyRepeatCB( KeyEvent &keyEvent )
	{
			keyAction(keyEvent.getExtendedKey());
	}
Exemplo n.º 3
0
int main(int argc, char **argv)
{
    XEvent event;
    
    done = False;
    rainbow = True;
    /* default to fullscreen */
    GLWin.fs = True;
    createGLWindow("NeHe's Particle Engine", 1920, 1280, 24, GLWin.fs);
    initKeys();
    /* wait for events*/ 
    while (!done)
    {
        /* handle the events in the queue */
        while (XPending(GLWin.dpy) > 0)
        {
            XNextEvent(GLWin.dpy, &event);
            switch (event.type)
            {
                case Expose:
	                if (event.xexpose.count != 0)
	                    break;
                    drawGLScene();
                    break;
                case ConfigureNotify:
                /* call resizeGLScene only if our window-size changed */
                    if ((event.xconfigure.width != GLWin.width) || 
                        (event.xconfigure.height != GLWin.height))
                    {
                        GLWin.width = event.xconfigure.width;
                        GLWin.height = event.xconfigure.height;
                        printf("Resize event\n");
                        resizeGLScene(event.xconfigure.width,
                            event.xconfigure.height);
                    }
                    break;
                /* exit in case of a mouse button press */
                case ButtonPress:     
                    done = True;
                    break;
                case KeyPress:
                    keys[event.xkey.keycode] = True;
                    break;
                case KeyRelease:
                    keys[event.xkey.keycode] = False;
                    break;
                case ClientMessage:    
                    if (*XGetAtomName(GLWin.dpy, event.xclient.message_type) == 
                        *"WM_PROTOCOLS")
                    {
                        printf("Exiting sanely...\n");
                        done = True;
                    }
                    break;
                default:
                    break;
            }
        }
        keyAction();
        drawGLScene();
    }
    killGLWindow();
    return 0;
}