-/* Conky, a system monitor, based on torsmo
+/* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*-
+ * vim: ts=4 sw=4 noet ai cindent syntax=c
+ *
+ * Conky, a system monitor, based on torsmo
*
* Any original torsmo code is licensed under the BSD license
*
*
* Please see COPYING for details
*
- * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al.
+ * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
* (see AUTHORS)
* All rights reserved.
*
#include "conky.h"
-xmms_socket_t xmms2_fd;
-fd_set xmms2_fdset;
xmmsc_connection_t *xmms2_conn;
#define CONN_INIT 0
void connection_lost(void *p)
{
struct information *ptr = p;
- ptr->xmms2.conn_state = CONN_NO;
+ ptr->xmms2.conn_state = CONN_NO;
- fprintf(stderr,"XMMS2 connection failed. %s\n", xmmsc_get_last_error(xmms2_conn));
+ fprintf(stderr,"XMMS2 connection failed. %s\n", xmmsc_get_last_error(xmms2_conn));
- xmms_alloc(ptr);
- strncpy(ptr->xmms2.status, "Disocnnected", text_buffer_size - 1);
- ptr->xmms2.playlist[0] = '\0';
- ptr->xmms2.id = 0;
+ xmms_alloc(ptr);
+ strncpy(ptr->xmms2.status, "Disocnnected", text_buffer_size - 1);
+ ptr->xmms2.playlist[0] = '\0';
+ ptr->xmms2.id = 0;
}
if (xmmsv_get_error(value, &errbuf)) {
fprintf(stderr,"XMMS2 server error. %s\n", errbuf);
return TRUE;
- }
+ }
if (xmmsv_get_int(value, ¤t_id) && current_id > 0) {
if (xmmsv_dict_get(infos, "title", &dict_entry) && xmmsv_get_string(dict_entry, &charval))
strncpy(ptr->xmms2.title, charval, text_buffer_size - 1);
-
+
if (xmmsv_dict_get(infos, "album", &dict_entry) && xmmsv_get_string(dict_entry, &charval))
strncpy(ptr->xmms2.album, charval, text_buffer_size - 1);
-
+
if (xmmsv_dict_get(infos, "genre", &dict_entry) && xmmsv_get_string(dict_entry, &charval))
strncpy(ptr->xmms2.genre, charval, text_buffer_size - 1);
if (xmmsv_dict_get(infos, "date", &dict_entry) && xmmsv_get_string(dict_entry, &charval))
strncpy(ptr->xmms2.date, charval, text_buffer_size - 1);
-
+
if (xmmsv_dict_get(infos, "tracknr", &dict_entry) && xmmsv_get_int(dict_entry, &intval))
}
if (xmmsv_get_int(value, &pb_state)) {
- switch (pb_state) {
- case XMMS_PLAYBACK_STATUS_PLAY:
- strncpy(ptr->xmms2.status, "Playing", text_buffer_size - 1);
- break;
- case XMMS_PLAYBACK_STATUS_PAUSE:
- strncpy(ptr->xmms2.status, "Paused", text_buffer_size - 1);
- break;
- case XMMS_PLAYBACK_STATUS_STOP:
- strncpy(ptr->xmms2.status, "Stopped", text_buffer_size - 1);
- break;
- default:
- strncpy(ptr->xmms2.status, "Unknown", text_buffer_size - 1);
- }
+ switch (pb_state) {
+ case XMMS_PLAYBACK_STATUS_PLAY:
+ strncpy(ptr->xmms2.status, "Playing", text_buffer_size - 1);
+ break;
+ case XMMS_PLAYBACK_STATUS_PAUSE:
+ strncpy(ptr->xmms2.status, "Paused", text_buffer_size - 1);
+ break;
+ case XMMS_PLAYBACK_STATUS_STOP:
+ strncpy(ptr->xmms2.status, "Stopped", text_buffer_size - 1);
+ ptr->xmms2.elapsed = ptr->xmms2.progress = ptr->xmms2.percent = 0;
+ break;
+ default:
+ strncpy(ptr->xmms2.status, "Unknown", text_buffer_size - 1);
+ }
}
return TRUE;
}
return TRUE;
}
-void update_xmms2()
+int update_xmms2(void)
{
struct information *current_info = &info;
/* did init fail? */
if (xmms2_conn == NULL) {
fprintf(stderr,"XMMS2 init failed. %s\n", xmmsc_get_last_error(xmms2_conn));
- return;
+ return 0;
}
/* init ok but not connected yet.. */
if (!xmmsc_connect(xmms2_conn, path)) {
fprintf(stderr,"XMMS2 connection failed. %s\n", xmmsc_get_last_error(xmms2_conn));
current_info->xmms2.conn_state = CONN_NO;
- return;
+ return 0;
}
/* set callbacks */
/* handle callbacks */
if (current_info->xmms2.conn_state == CONN_OK) {
- struct timeval tmout;
-
- tmout.tv_sec = 0;
- tmout.tv_usec = 100;
-
- select(xmms2_fd + 1, &xmms2_fdset, NULL, NULL, &tmout);
xmmsc_io_in_handle(xmms2_conn);
- if (xmmsc_io_want_out(xmms2_conn)) {
+ if (xmmsc_io_want_out(xmms2_conn))
xmmsc_io_out_handle(xmms2_conn);
- }
- }
- }
-
-void free_xmms2()
-{
- struct information *current_info = &info;
-
- current_info->xmms2.conn_state = -1;
-
- free(current_info->xmms2.artist);
- free(current_info->xmms2.album);
- free(current_info->xmms2.title);
- free(current_info->xmms2.genre);
- free(current_info->xmms2.comment);
- free(current_info->xmms2.url);
- free(current_info->xmms2.date);
- free(current_info->xmms2.playlist);
- free(current_info->xmms2.status);
+ }
+ return 0;
}