All pastes #1941933 Raw Edit

erwan

public text v1 · immutable
#1941933 ·published 2010-09-16 08:05 UTC
rendered paste body
diff --git a/libcommlitchee.c b/libcommlitchee.cindex 1c77d66..a9a4cee 100644--- a/libcommlitchee.c+++ b/libcommlitchee.c@@ -4,12 +4,15 @@  #include "libcommlitchee.h" #include <linux/input.h>+#include <sys/signal.h> #include <sys/prctl.h>  #define CONFIG_FILE "/etc/libcommlitchee.conf"  #define COMM_LITCHEE_MAX_FPS_TOK "MAX_FPS=" +static int do_fps_filter=0;+static struct sigaction sigaction_fps; static int comm_litchee_max_fps = 25; /* Default value */  static void read_config(void);@@ -95,6 +98,7 @@ LITCHEE_ENTRY_POINT comm_handle_t* comm_exec_app(comm_param_t * com_param)  LITCHEE_ENTRY_POINT void comm_read_current_buffer(comm_handle_t* tt, char * z_buffer) {+ 	if(!tt) { 		return; 	}@@ -151,6 +155,11 @@ LITCHEE_ENTRY_POINT void comm_close_current_app(comm_handle_t* tt) 	free(tt); } ++void do_fps_filtering() {+	do_fps_filter=0;+}+  comm_handle_t* comm_init(char * name) { 	int nbbytes = 0;@@ -191,6 +200,11 @@ comm_handle_t* comm_init(char * name) 		nbbytes += read(STDIN, com->tsc_events+nbbytes, sizeof(char)); 	} +	if (comm_litchee_max_fps > 0) {	+		sigaction_fps.sa_handler = do_fps_filtering; +		sigaction_fps.sa_flags=0;+		sigaction(SIGALRM, &sigaction_fps, NULL);+	} 	return com; } @@ -216,21 +230,18 @@ void * comm_get_buffer(comm_handle_t* com) int comm_commit_buffer(comm_handle_t* com) { 	int ret = 0;-	struct timeval tv;-	long long      diff;  	if(com->soc < 0) { 		return -1; 	}  	if(comm_litchee_max_fps > 0) {-		gettimeofday(&tv, NULL);-		diff = (tv.tv_sec * 1000000 + tv.tv_usec) --			   (com->last_commit.tv_sec * 1000000 + com->last_commit.tv_usec);--		if(diff > 0 && diff < (1000000 / comm_litchee_max_fps))-			/* Don't block game, ignore frame */+		/* Don't block game, ignore frame */+		if (do_fps_filter == 1 ) 			return 0;++		do_fps_filter=1;+		ualarm(1000*1000/comm_litchee_max_fps, 0);	 	}  	pthread_mutex_lock(&(com->shm->mut));@@ -243,9 +254,6 @@ int comm_commit_buffer(comm_handle_t* com) 	if(ret == -1) 		return errno; -	if(comm_litchee_max_fps > 0)-		gettimeofday(&com->last_commit, NULL);- 	return 0; }