mirror of
https://github.com/gryf/gryf-overlay.git
synced 2026-01-06 13:54:23 +01:00
90 lines
2.8 KiB
Diff
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);
|