X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flirc.c;h=965037bd23f94e8304b85278f4ecbce236b05001;hb=373736315529f8b760df043a21ee7526941c8bea;hp=ff75b90321ea75678827df0922ac049a4b1272e0;hpb=6c29c9b2dc0aab7c7273b093609edcc175510df7;p=ncmpc.git diff --git a/src/lirc.c b/src/lirc.c index ff75b90..965037b 100644 --- a/src/lirc.c +++ b/src/lirc.c @@ -1,54 +1,35 @@ /* ncmpc (Ncurses MPD Client) - * (c) 2004-2010 The Music Player Daemon Project + * (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 #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(G_GNUC_UNUSED GIOChannel *source, - G_GNUC_UNUSED GIOCondition condition, G_GNUC_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; @@ -58,7 +39,7 @@ lirc_event(G_GNUC_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; } } @@ -66,3 +47,30 @@ lirc_event(G_GNUC_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(); +}