summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 237fc6e)
raw | patch | inline | side by side (parent: 237fc6e)
author | Thomas Jansen <mithi@mithi.net> | |
Mon, 10 Nov 2008 13:13:46 +0000 (14:13 +0100) | ||
committer | Max Kellermann <max@duempel.org> | |
Mon, 10 Nov 2008 13:13:46 +0000 (14:13 +0100) |
* moved lirc_event to lirc.c and split out the parts that depend on
variables in main.c into three separate functions
* changed keyboard_event accordingly to avoid duplicate code
* merged lirc_event with ncmpc_lirc_get_command
variables in main.c into three separate functions
* changed keyboard_event accordingly to avoid duplicate code
* merged lirc_event with ncmpc_lirc_get_command
src/lirc.c | patch | blob | history | |
src/lirc.h | patch | blob | history | |
src/main.c | patch | blob | history | |
src/ncmpc.h | patch | blob | history |
diff --git a/src/lirc.c b/src/lirc.c
index 4e7e423d115055776cc4beb81de8a6d34579b85c..aeb86650ca411f89f957aabbb65e6d0289e80f63 100644 (file)
--- a/src/lirc.c
+++ b/src/lirc.c
#include <lirc/lirc_client.h>
#include "lirc.h"
+#include "ncmpc.h"
static struct lirc_config *lc = NULL;
-static int lirc_socket = 0;
int ncmpc_lirc_open()
{
char prog[] = "ncmpc";
+ int lirc_socket = 0;
if ((lirc_socket = lirc_init(prog, 0)) == -1)
return -1;
lirc_deinit();
}
-command_t ncmpc_lirc_get_command()
+gboolean
+lirc_event(mpd_unused GIOChannel *source,
+ mpd_unused GIOCondition condition, mpd_unused gpointer data)
{
- char *code = NULL, *cmd = NULL;
+ char *code, *txt;
+ command_t cmd;
- if (lirc_nextcode(&code) != 0)
- return CMD_NONE;
+ begin_input_event();
- if (lirc_code2char(lc, code, &cmd) != 0)
- return CMD_NONE;
-
- if (!cmd)
- return CMD_NONE;
+ if (lirc_nextcode(&code) == 0) {
+ while (lirc_code2char(lc, code, &txt) == 0 && txt != NULL) {
+ cmd = get_key_command_from_name(txt);
+ if (do_input_event(cmd) != 0)
+ return FALSE;
+ }
+ }
- return get_key_command_from_name(cmd);
+ end_input_event();
+ return TRUE;
}
diff --git a/src/lirc.h b/src/lirc.h
index 9359898ad5a5ed842060e7b8c52a2fab714d123e..a3045a2068c49f36c1517160abb32a7ea00928ed 100644 (file)
--- a/src/lirc.h
+++ b/src/lirc.h
#define LIRC_H
#include "command.h"
+#include <glib.h>
int ncmpc_lirc_open(void);
void ncmpc_lirc_close(void);
-command_t ncmpc_lirc_get_command(void);
+
+gboolean
+lirc_event(GIOChannel *source, GIOCondition condition, gpointer data);
#endif
diff --git a/src/main.c b/src/main.c
index b9fb3cd0e58642c95dd19d3f2c8f2a8b274ef80d..26ab45896b9f36fc408f0f8a24f44e1c52854c0d 100644 (file)
--- a/src/main.c
+++ b/src/main.c
return TRUE;
}
-static gboolean
-keyboard_event(mpd_unused GIOChannel *source,
- mpd_unused GIOCondition condition, mpd_unused gpointer data)
+void begin_input_event(void)
{
- command_t cmd;
-
/* remove the idle timeout; add it later with fresh interval */
g_source_remove(idle_source_id);
+}
- if ((cmd=get_keyboard_command()) != CMD_NONE) {
- if (cmd == CMD_QUIT) {
- g_main_loop_quit(main_loop);
- return FALSE;
- }
+void end_input_event(void)
+{
+ screen_update(mpd);
- screen_cmd(mpd, cmd);
+ idle_source_id = g_timeout_add(idle_interval, timer_idle, NULL);
+}
- if (cmd == CMD_VOLUME_UP || cmd == CMD_VOLUME_DOWN) {
- /* make sure we dont update the volume yet */
- g_source_remove(update_source_id);
- update_source_id = g_timeout_add(update_interval,
- timer_mpd_update,
- GINT_TO_POINTER(TRUE));
- }
+int do_input_event(command_t cmd)
+{
+ if (cmd == CMD_QUIT) {
+ g_main_loop_quit(main_loop);
+ return -1;
}
- screen_update(mpd);
+ screen_cmd(mpd, cmd);
- idle_source_id = g_timeout_add(idle_interval, timer_idle, NULL);
- return TRUE;
+ if (cmd == CMD_VOLUME_UP || cmd == CMD_VOLUME_DOWN) {
+ /* make sure we dont update the volume yet */
+ g_source_remove(update_source_id);
+ update_source_id = g_timeout_add(update_interval,
+ timer_mpd_update,
+ GINT_TO_POINTER(TRUE));
+ }
+
+ return 0;
}
-#ifdef ENABLE_LIRC
static gboolean
-lirc_event(mpd_unused GIOChannel *source,
- mpd_unused GIOCondition condition, mpd_unused gpointer data)
+keyboard_event(mpd_unused GIOChannel *source,
+ mpd_unused GIOCondition condition, mpd_unused gpointer data)
{
command_t cmd;
- /* remove the idle timeout; add it later with fresh interval */
- g_source_remove(idle_source_id);
+ begin_input_event();
- if ((cmd = ncmpc_lirc_get_command()) != CMD_NONE) {
- if (cmd == CMD_QUIT) {
- g_main_loop_quit(main_loop);
+ if ((cmd=get_keyboard_command()) != CMD_NONE)
+ if (do_input_event(cmd) != 0)
return FALSE;
- }
- screen_cmd(mpd, cmd);
-
- if (cmd == CMD_VOLUME_UP || cmd == CMD_VOLUME_DOWN) {
- /* make sure we dont update the volume yet */
- g_source_remove(update_source_id);
- update_source_id = g_timeout_add(update_interval,
- timer_mpd_update,
- GINT_TO_POINTER(TRUE));
- }
- }
-
- screen_update(mpd);
-
- idle_source_id = g_timeout_add(idle_interval, timer_idle, NULL);
+ end_input_event();
return TRUE;
}
-#endif
#ifndef NCMPC_MINI
/**
diff --git a/src/ncmpc.h b/src/ncmpc.h
index 6748c779b822f78fb8000e77637cdbe6a699cdfd..9e4703b573d2519405d96d71dc859e6f795bdf37 100644 (file)
--- a/src/ncmpc.h
+++ b/src/ncmpc.h
#ifndef NCMPC_H
#define NCMPC_H
+#include "command.h"
+
void
sigstop(void);
+void begin_input_event(void);
+void end_input_event(void);
+int do_input_event(command_t cmd);
+
#endif /* NCMPC_H */