1
0
mirror of https://github.com/gryf/gryf-overlay.git synced 2026-01-06 13:54:23 +01:00
Files
gryf-overlay/media-plugins/xmms-infopipe/files/xmms-infopipe-tweaks.patch
2010-02-09 21:25:29 +01:00

90 lines
2.8 KiB
Diff

--- xmms-infopipe-1.3.orig/src/infopipe_senddata.c
+++ xmms-infopipe-1.3/src/infopipe_senddata.c
@@ -5,6 +5,7 @@
#include <stdio.h>
#include <glib.h>
#include <xmms/util.h>
+#include <xmms/xmmsctrl.h>
#include "infopipe.h"
#include "../config.h"
@@ -14,7 +15,7 @@
This will get the XMMS information and print them out to the pipe.
*/
void blast_info(FILE *pipe) {
- gchar *play_status;
+ gchar *play_status, *s1, *s2;
gint tunes = xmms_remote_get_playlist_length(SESSIONID);
gint current = xmms_remote_get_playlist_pos(SESSIONID);
@@ -81,10 +82,14 @@
fprintf(pipe, "Channels: %d\n",nch);
/* The basicest of the basic information. Title string and file name. */
- fprintf(pipe, "Title: %s\n",
- xmms_remote_get_playlist_title(SESSIONID,current));
- fprintf(pipe, "File: %s\n",
- xmms_remote_get_playlist_file(SESSIONID,current));
+ s1 = xmms_remote_get_playlist_title(SESSIONID,current);
+ s2 = xmms_remote_get_playlist_file(SESSIONID,current);
+
+ fprintf(pipe, "Title: %s\n", s1);
+ fprintf(pipe, "File: %s\n", s2);
+
+ g_free(s1); /* xmms_remote_get_playlist_* require we call g_free on the returned string */
+ g_free(s2); /* xmms_remote_get_playlist_* require we call g_free on the returned string */
g_free(play_status);
}
--- xmms-infopipe-1.3.orig/src/infopipe.c
+++ xmms-infopipe-1.3/src/infopipe.c
@@ -228,16 +228,24 @@
fd_set fds;
FILE *p; /* the pipe */
int fd; /* File descriptor for pipe, and its flags. */
+ struct timespec tv;
for(;;) {
+ /* This is a thread, fill the structure early */
+ tv.tv_sec = 0;
+ tv.tv_nsec = 100000000; /* 1/10th of a second */
+
/* Open the pipe as file descriptor. */
/* (O_RDONLY seems to be enough in Linux, but FreeBSDites seemed to
demand O_RDWR.) */
- fd = open(fifo_file, O_RDWR);
+ /* (Actually, we need to write to the pipe, not read it, so O_WRONLY) */
+ fd = open(fifo_file, O_WRONLY);
if(fd == -1) {
perror("xmms_infopipe: Pipe open failed");
xmms_quit();
+ /* exit the function, don't give the chance to fill with invalid data */
+ return;
}
/* Set the file handle to use non-blocking I/O */
@@ -262,9 +270,8 @@
/* Changed to 1 second after request... report if you have problems.
FIXME: Should use XMMS configfile facility & config dialog???
*/
- sleep(1); /* Umm, or non-blockingness still doesn't work without this!
- Is there some nicer way of saying this, like "wait
- until no reader?" select()? */
+
+ nanosleep(&tv, NULL);
}
}
--- xmms-infopipe-1.3.orig/applications/xmms-info.php
+++ xmms-infopipe-1.3/applications/xmms-info.php
@@ -11,7 +11,7 @@
$info = fopen ("/tmp/xmms-info", "r");
- $input = fread ($info, 261);
+ $input = fread ($info, 2048);
$parse = split ("\n", $input);
fclose ($info);