X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flirc.c;h=965037bd23f94e8304b85278f4ecbce236b05001;hb=373736315529f8b760df043a21ee7526941c8bea;hp=aeb86650ca411f89f957aabbb65e6d0289e80f63;hpb=65804e73eaed005b0f8114e5c6f03fa59341a2bc;p=ncmpc.git diff --git a/src/lirc.c b/src/lirc.c index aeb8665..965037b 100644 --- a/src/lirc.c +++ b/src/lirc.c @@ -1,35 +1,35 @@ -#include +/* ncmpc (Ncurses MPD Client) + * (c) 2004-2017 The Music Player Daemon Project + * Project homepage: http://musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + #include "lirc.h" #include "ncmpc.h" +#include "Compiler.h" -static struct lirc_config *lc = NULL; - -int ncmpc_lirc_open() -{ - char prog[] = "ncmpc"; - int lirc_socket = 0; - - if ((lirc_socket = lirc_init(prog, 0)) == -1) - return -1; - - if (lirc_readconfig(NULL, &lc, NULL)) { - lirc_deinit(); - return -1; - } +#include - return lirc_socket; -} +#include -void ncmpc_lirc_close() -{ - if (lc) - lirc_freeconfig(lc); - lirc_deinit(); -} +static struct lirc_config *lc = NULL; -gboolean -lirc_event(mpd_unused GIOChannel *source, - mpd_unused GIOCondition condition, mpd_unused gpointer data) +static gboolean +lirc_event(gcc_unused GIOChannel *source, + gcc_unused GIOCondition condition, gcc_unused gpointer data) { char *code, *txt; command_t cmd; @@ -39,7 +39,7 @@ lirc_event(mpd_unused GIOChannel *source, 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) + if (!do_input_event(cmd)) return FALSE; } } @@ -47,3 +47,30 @@ lirc_event(mpd_unused GIOChannel *source, end_input_event(); return TRUE; } + +void +ncmpc_lirc_init() +{ + char prog[] = "ncmpc"; + int lirc_socket = 0; + + if ((lirc_socket = lirc_init(prog, 0)) == -1) + return; + + if (lirc_readconfig(NULL, &lc, NULL)) { + lirc_deinit(); + return; + } + + GIOChannel *channel = g_io_channel_unix_new(lirc_socket); + g_io_add_watch(channel, G_IO_IN, lirc_event, NULL); + g_io_channel_unref(channel); +} + +void +ncmpc_lirc_deinit() +{ + if (lc) + lirc_freeconfig(lc); + lirc_deinit(); +}