X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/45e6d04af841f7f1114c22d24c3a58d797a6580b..e04f4cb529108fc02c44eda228f96434c1086956:/disobedience/disobedience.c diff --git a/disobedience/disobedience.c b/disobedience/disobedience.c index 53aea56..dea9d59 100644 --- a/disobedience/disobedience.c +++ b/disobedience/disobedience.c @@ -2,32 +2,30 @@ * This file is part of DisOrder. * Copyright (C) 2006, 2007, 2008 Richard Kettlewell * - * This program is free software; you can redistribute it and/or modify + * 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 + * the Free Software Foundation, either version 3 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. - * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see . */ /** @file disobedience/disobedience.c * @brief Main Disobedience program */ #include "disobedience.h" -#include "mixer.h" #include "version.h" #include #include #include +#include /* Apologies for the numerous de-consting casts, but GLib et al do not seem to * have heard of const. */ @@ -70,6 +68,9 @@ int volume_l; /** @brief Right channel volume */ int volume_r; +/** @brief Audio backend */ +const struct uaudio *backend; + double goesupto = 10; /* volume upper bound */ /** @brief True if a NOP is in flight */ @@ -265,10 +266,10 @@ static gboolean periodic_fast(gpointer attribute((unused)) data) { } last = now; #endif - if(rtp_supported && mixer_supported(DEFAULT_BACKEND)) { + if(rtp_supported && backend && backend->get_volume) { int nl, nr; - if(!mixer_control(DEFAULT_BACKEND, &nl, &nr, 0) - && (nl != volume_l || nr != volume_r)) { + backend->get_volume(&nl, &nr); + if(nl != volume_l || nr != volume_r) { volume_l = nl; volume_r = nr; event_raise("volume-changed", 0); @@ -379,32 +380,32 @@ static void help(void) { static void version_completed(void attribute((unused)) *v, const char attribute((unused)) *err, - const char *version) { + const char *ver) { long major, minor, patch, dev; - if(!version) { + if(!ver) { server_version = 0; server_version_bytes = 0; return; } - server_version = version; + server_version = ver; server_version_bytes = 0; - major = strtol(version, (char **)&version, 10); - if(*version != '.') + major = strtol(ver, (char **)&ver, 10); + if(*ver != '.') return; - ++version; - minor = strtol(version, (char **)&version, 10); - if(*version == '.') { - ++version; - patch = strtol(version, (char **)&version, 10); + ++ver; + minor = strtol(ver, (char **)&ver, 10); + if(*ver == '.') { + ++ver; + patch = strtol(ver, (char **)&ver, 10); } else patch = 0; - if(*version) { - if(*version == '+') { + if(*ver) { + if(*ver == '+') { dev = 1; - ++version; + ++ver; } - if(*version) + if(*ver) dev = 2; } else dev = 0; @@ -422,6 +423,8 @@ void logged_in(void) { periodic_fast(0); /* Recheck server version */ disorder_eclient_version(client, version_completed, 0); + disorder_eclient_enable_connect(client); + disorder_eclient_enable_connect(logclient); } int main(int argc, char **argv) { @@ -446,6 +449,11 @@ int main(int argc, char **argv) { } if(!gtkok) fatal(0, "failed to initialize GTK+"); + /* gcrypt initialization */ + if(!gcry_check_version(NULL)) + disorder_fatal(0, "gcry_check_version failed"); + gcry_control(GCRYCTL_INIT_SECMEM, 0); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); signal(SIGPIPE, SIG_IGN); init_styles(); load_settings(); @@ -453,6 +461,10 @@ int main(int argc, char **argv) { D(("create main loop")); mainloop = g_main_loop_new(0, 0); if(config_read(0)) fatal(0, "cannot read configuration"); + /* we'll need mixer support */ + backend = uaudio_apis[0]; + if(backend->open_mixer) + backend->open_mixer(); /* create the clients */ if(!(client = gtkclient()) || !(logclient = gtkclient()))