/*
* This file is part of DisOrder.
- * Copyright (C) 2006, 2007 Richard Kettlewell
+ * Copyright (C) 2006, 2007, 2008 Richard Kettlewell
*
* 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
#include "disobedience.h"
#include "mixer.h"
+#include "version.h"
#include <getopt.h>
#include <locale.h>
}
last = now;
#endif
- if(rtp_supported) {
+ if(rtp_supported && mixer_supported(DEFAULT_BACKEND)) {
int nl, nr;
- if(!mixer_control(&nl, &nr, 0) && (nl != volume_l || nr != volume_r)) {
+ if(!mixer_control(DEFAULT_BACKEND, &nl, &nr, 0)
+ && (nl != volume_l || nr != volume_r)) {
volume_l = nl;
volume_r = nr;
volume_update();
static void got_rtp_address(void attribute((unused)) *v,
int attribute((unused)) nvec,
char attribute((unused)) **vec) {
+ ++suppress_actions;
rtp_address_in_flight = 0;
rtp_supported = 1;
rtp_is_running = rtp_running();
control_monitor(0);
+ --suppress_actions;
}
/** @brief Called when a rtp-address command fails */
static void no_rtp_address(struct callbackdata attribute((unused)) *cbd,
int attribute((unused)) code,
const char attribute((unused)) *msg) {
+ ++suppress_actions;
rtp_address_in_flight = 0;
rtp_supported = 0;
rtp_is_running = 0;
control_monitor(0);
+ --suppress_actions;
}
/** @brief Called to check whether RTP play is available */
exit(0);
}
-/* display version number and terminate */
-static void version(void) {
- xprintf("disorder version %s\n", disorder_version_string);
- xfclose(stdout);
- exit(0);
-}
-
/* reset state */
void reset(void) {
struct reset_callback_node *r;
int main(int argc, char **argv) {
int n;
+ gboolean gtkok;
mem_init();
/* garbage-collect PCRE's memory */
g_mem_set_vtable((GMemVTable *)&glib_memvtable);
#endif
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
- gtk_init(&argc, &argv);
+ gtkok = gtk_init_check(&argc, &argv);
while((n = getopt_long(argc, argv, "hVc:dtHC", options, 0)) >= 0) {
switch(n) {
case 'h': help();
- case 'V': version();
+ case 'V': version("disobedience");
case 'c': configfile = optarg; break;
case 'd': debugging = 1; break;
case 't': goesupto = 11; break;
default: fatal(0, "invalid option");
}
}
+ if(!gtkok)
+ fatal(0, "failed to initialize GTK+");
signal(SIGPIPE, SIG_IGN);
init_styles();
load_settings();
disorder_eclient_log(logclient, &log_callbacks, 0);
/* See if RTP play supported */
check_rtp_address();
+ suppress_actions = 0;
+ /* If no password is set yet pop up a login box */
+ if(!config->password)
+ login_box();
D(("enter main loop"));
MTAG("misc");
g_main_loop_run(mainloop);