V4L/DVB (13540): ir-common: Cleanup get key evdev code

The same loop to seek for a key were used on different places. Also,
no spinlock were protecting it to avoid the risk of replacing a keycode
while seeking for a new code.

This cleanup does:
	- create an unique function to seek for a code;
	- adds an spinlock to protect the table lookup;
	- remove some unused code;
	- simplifies to code to make it easier to understand.

Basically no change in behavior should be noticed after this patch.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Mauro Carvalho Chehab
2009-12-02 15:56:47 -03:00
parent a53e212571
commit 7fee03e487
2 changed files with 76 additions and 61 deletions

View File

@@ -26,6 +26,7 @@
#include <linux/input.h>
#include <linux/workqueue.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
extern int media_ir_debug; /* media_ir_debug level (0,1,2) */
#define IR_dprintk(level, fmt, arg...) if (media_ir_debug >= level) \
@@ -43,6 +44,7 @@ struct ir_scancode {
struct ir_scancode_table {
struct ir_scancode *scan;
int size;
spinlock_t lock;
};
#define RC5_START(x) (((x)>>12)&3)