changeset 3066:c0ae2a5a15e8

Remove monitor GUI.
author William Pitcock <nenolod@atheme.org>
date Fri, 24 Apr 2009 06:57:12 -0500
parents a0ba6102131d
children 8c772d3a5346
files src/crossfade/Makefile src/crossfade/configure.c src/crossfade/crossfade.c src/crossfade/monitor.c src/crossfade/monitor.h
diffstat 5 files changed, 0 insertions(+), 518 deletions(-) [+]
line wrap: on
line diff
--- a/src/crossfade/Makefile	Fri Apr 24 06:38:48 2009 -0500
+++ b/src/crossfade/Makefile	Fri Apr 24 06:57:12 2009 -0500
@@ -8,7 +8,6 @@
        debug.c				\
        format.c				\
        interface-2.0.c			\
-       monitor.c			\
        player.c				\
        support-2.0.c
 
--- a/src/crossfade/configure.c	Fri Apr 24 06:38:48 2009 -0500
+++ b/src/crossfade/configure.c	Fri Apr 24 06:57:12 2009 -0500
@@ -28,7 +28,6 @@
 #include "crossfade.h"
 #include "configure.h"
 #include "cfgutil.h"
-#include "monitor.h"
 
 #include "interface-2.0.h"
 #include "support-2.0.h"
@@ -1048,7 +1047,6 @@
 
 	/* misc */
 	xfg->enable_debug = GET_TOGGLE("debug_stderr_check");
-	xfg->enable_monitor = GET_TOGGLE("debug_monitor_check");
 	xfg->enable_mixer = GET_TOGGLE("mixopt_enable_check");
 	xfg->mixer_reverse = GET_TOGGLE("mixopt_reverse_check");
 	xfg->mixer_software = GET_TOGGLE("mixopt_software_check");
@@ -1087,9 +1085,6 @@
 
 	/* save configuration */
 	xfade_save_config();
-
-	/* show/hide monitor win depending on config->enable_monitor */
-	xfade_check_monitor_win();
 }
 
 void
@@ -1251,7 +1246,6 @@
 
 		/* misc */
 		SET_TOGGLE("debug_stderr_check",          xfg->enable_debug);
-		SET_TOGGLE("debug_monitor_check",         xfg->enable_monitor);
 		SET_TOGGLE("mixopt_enable_check",         xfg->enable_mixer);
 		SET_TOGGLE("mixopt_reverse_check",        xfg->mixer_reverse);
 		SET_TOGGLE("mixopt_software_check",       xfg->mixer_software);
--- a/src/crossfade/crossfade.c	Fri Apr 24 06:38:48 2009 -0500
+++ b/src/crossfade/crossfade.c	Fri Apr 24 06:57:12 2009 -0500
@@ -32,7 +32,6 @@
 #include "convert.h"
 
 #include "configure.h"
-#include "monitor.h"
 
 #include "interface-2.0.h"
 #include "support-2.0.h"
@@ -409,9 +408,6 @@
 	}
 	SCHED_YIELD;
 
-	/* start updating monitor */
-	xfade_start_monitor();
-
 	/* done */
 	output_opened = TRUE;
 	return 0;
@@ -434,9 +430,6 @@
 	/* check for realtime priority, it needs some special attention */
 	realtime = xfplayer_check_realtime_priority();
 
-	/* show monitor win if enabled in config */
-	xfade_check_monitor_win();
-
 	/* init contexts */
 	convert_init(&convert_context);
 #ifdef HAVE_LIBFFTW
@@ -1851,8 +1844,6 @@
 	/* cleanup: close output */
 	if (output_opened)
 	{
-		xfade_stop_monitor();
-
 		DEBUG(("[crossfade] buffer_thread_f: closing output...\n"));
 
 		if (the_op->close_audio)
--- a/src/crossfade/monitor.c	Fri Apr 24 06:38:48 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,460 +0,0 @@
-/*
- *  XMMS Crossfade Plugin
- *  Copyright (C) 2000-2007  Peter Eisenlohr <peter@eisenlohr.org>
- *
- *  based on the original OSS Output Plugin
- *  Copyright (C) 1998-2000  Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies
- *
- *  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
- *  (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.
- *
- *  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.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#include <string.h>
-#include <gtk/gtk.h>
-
-#include "monitor.h"
-#include "configure.h"
-#include "cfgutil.h"
-#include "crossfade.h"
-
-#include "interface-2.0.h"
-#include "support-2.0.h"
-
-extern MUTEX buffer_mutex;
-
-GtkWidget   *monitor_win = NULL;
-GtkWidget   *monitor_display_drawingarea;
-GtkEntry    *monitor_output_entry;
-GtkProgress *monitor_output_progress;
-
-static GtkLabel *monitor_position_label;
-static GtkLabel *monitor_total_label;
-static GtkLabel *monitor_left_label;
-static GtkLabel *monitor_output_time_label;
-static GtkLabel *monitor_output_time_sep;
-static GtkLabel *monitor_written_time_label;
-
-static gchar *default_position_str = NULL;
-static gchar *default_total_str = NULL;
-static gchar *default_left_str = NULL;
-static gchar *default_output_time_str = NULL;
-static gchar *default_written_time_str = NULL;
-
-static gboolean monitor_active = FALSE;
-static guint monitor_tag;
-static gint monitor_output_max;
-static gint monitor_closing;
-
-#define RUNNING 0
-#define CLOSING 1
-#define CLOSED  2
-
-#define SMOD(x,n) (((x)<0)?((n)-(x))%(n):((x)%(n)))
-
-
-static void
-draw_wrapped(GtkWidget * widget, gint pos, gint width, GdkGC * gc)
-{
-	GdkDrawable *win = widget->window;
-
-	gint ww = widget->allocation.width;
-	gint wh = widget->allocation.height;
-
-	if (width <= 0)
-		return;
-
-	if (width < ww)
-	{
-		gint x = SMOD(pos, ww);
-		if ((x + width) >= ww)
-		{
-			gdk_draw_rectangle(win, gc, TRUE, x, 0, ww - x, wh);
-			gdk_draw_rectangle(win, gc, TRUE, 0, 0, width - (ww - x), wh);
-		}
-		else
-			gdk_draw_rectangle(win, gc, TRUE, x, 0, width, wh);
-	}
-	else
-		gdk_draw_rectangle(win, gc, TRUE, 0, 0, ww, wh);
-}
-
-gboolean
-on_monitor_display_drawingarea_expose_event(GtkWidget * widget, GdkEventExpose * event, gpointer user_data)
-{
-	if (buffer && buffer->size && output_opened)
-	{
-		gint ww = widget->allocation.width;
-
-		gint x1 = 0;
-		gint x2 = buffer->used;
-		gint x3 = buffer->used + buffer->mix;
-		gint x4 = buffer->size;
-
-		x1 = (gint64) (x1 + buffer->rd_index) * ww / buffer->size;
-		x2 = (gint64) (x2 + buffer->rd_index) * ww / buffer->size;
-		x3 = (gint64) (x3 + buffer->rd_index) * ww / buffer->size;
-		x4 = (gint64) (x4 + buffer->rd_index) * ww / buffer->size;
-
-		draw_wrapped(widget, x1, x2 - x1, widget->style->fg_gc[GTK_STATE_NORMAL]);
-		draw_wrapped(widget, x2, x3 - x2, widget->style->white_gc);
-		draw_wrapped(widget, x3, x4 - x3, widget->style->bg_gc[GTK_STATE_NORMAL]);
-	}
-	else
-		gdk_window_clear_area(widget->window, event->area.x, event->area.y, event->area.width, event->area.height);
-
-	return TRUE;
-}
-
-gboolean
-on_monitor_win_delete_event(GtkWidget * widget, GdkEvent * event, gpointer user_data)
-{
-	/* V0.1.1 20000618: removed, didn't make much sense since it wasn't saved */
-	/* if (config) config->enable_monitor = FALSE; */
-	if (default_position_str)
-	{
-		g_free(default_position_str);
-		default_position_str = NULL;
-	}
-	if (default_total_str)
-	{
-		g_free(default_total_str);
-		default_total_str = NULL;
-	}
-	if (default_left_str)
-	{
-		g_free(default_left_str);
-		default_left_str = NULL;
-	}
-	if (default_output_time_str)
-	{
-		g_free(default_output_time_str);
-		default_output_time_str = NULL;
-	}
-	if (default_written_time_str)
-	{
-		g_free(default_written_time_str);
-		default_written_time_str = NULL;
-	}
-	return (FALSE);  /* FALSE: destroy window */
-}
-
-void
-xfade_check_monitor_win()
-{
-	gchar *str;
-
-	if (config->enable_monitor)
-	{
-		if (!monitor_win && !(monitor_win = create_monitor_win()))
-		{
-			DEBUG(("[crossfade] check_monitor_win: error creating window!\n"));
-			return;
-		}
-#if 0
-		if (!GDK_IS_WINDOW(monitor_win))
-		{
-			DEBUG(("[crossfade] check_monitor_win: GDK_IS_WINDOW(monitor_win) failed!\n"));
-			DEBUG(("[crossfade] check_monitor_win: probably running in headless mode!\n"));
-			monitor_win = NULL;
-			return;
-		}
-#endif
-		/* automatically set monitor_win to NULL when window is destroyed */
-		gtk_signal_connect(GTK_OBJECT(monitor_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &monitor_win);
-
-		/* show window */
-		gtk_widget_hide(GTK_WIDGET(lookup_widget(monitor_win, "monitor_seekeof_button")));
-		gtk_widget_show(monitor_win);
-
-		/* get pointers to widgets (used by crossfade.c to update the monitor) */
-		monitor_display_drawingarea =              lookup_widget(monitor_win, "monitor_display_drawingarea");
-		monitor_output_progress     = GTK_PROGRESS(lookup_widget(monitor_win, "monitor_output_progress"));
-		monitor_position_label      = GTK_LABEL   (lookup_widget(monitor_win, "monpos_position_label"));
-		monitor_total_label         = GTK_LABEL   (lookup_widget(monitor_win, "monpos_total_label"));
-		monitor_left_label          = GTK_LABEL   (lookup_widget(monitor_win, "monpos_left_label"));
-		monitor_output_time_label   = GTK_LABEL   (lookup_widget(monitor_win, "monpos_output_time_label"));
-		monitor_output_time_sep     = GTK_LABEL   (lookup_widget(monitor_win, "monpos_output_time_separator_label"));
-		monitor_written_time_label  = GTK_LABEL   (lookup_widget(monitor_win, "monpos_written_time_label"));
-
-		/* get default strings (displayed when monitor is stopped) */
-		if (!default_position_str)
-		{
-			gtk_label_get(monitor_position_label, &str);
-			default_position_str = g_strdup(str);
-		}
-		if (!default_total_str)
-		{
-			gtk_label_get(monitor_total_label, &str);
-			default_total_str = g_strdup(str);
-		}
-		if (!default_left_str)
-		{
-			gtk_label_get(monitor_left_label, &str);
-			default_left_str = g_strdup(str);
-		}
-		if (!default_output_time_str)
-		{
-			gtk_label_get(monitor_output_time_label, &str);
-			default_output_time_str = g_strdup(str);
-		}
-		if (!default_written_time_str)
-		{
-			gtk_label_get(monitor_written_time_label, &str);
-			default_written_time_str = g_strdup(str);
-		}
-
-		/* force gtk_progress_configure */
-		monitor_output_max = 0;
-	}
-	else if (monitor_win)
-		gtk_widget_destroy(monitor_win);
-}
-
-void
-label_set_text(GtkLabel * label, gchar * text)
-{
-	gchar *old_text;
-	gtk_label_get(label, &old_text);
-	if (strcmp(old_text, text) == 0)
-		return;
-	gtk_label_set_text(label, text);
-}
-
-gint
-xfade_update_monitor(gpointer userdata)
-{
-	GdkRectangle update_rect;
-
-	/* HACK: (see xfade_stop_monitor() below) */
-	if (monitor_closing == CLOSED)
-		return TRUE;
-
-	if (monitor_closing == CLOSING)
-		monitor_closing = CLOSED;
-
-	if (!monitor_win)
-		return TRUE;
-
-	/* lock buffer (only if we need to) */
-	if (monitor_closing != CLOSED)
-		MUTEX_LOCK(&buffer_mutex);
-
-	gint output_time  = the_op->output_time();
-	gint written_time = the_op->written_time();
-	gint output_used  = written_time - output_time;
-
-	/*** Mixing Buffer ***/
-	update_rect.x = 0;
-	update_rect.y = 0;
-	update_rect.width = monitor_display_drawingarea->allocation.width;
-	update_rect.height = monitor_display_drawingarea->allocation.height;
-
-	if (monitor_closing == CLOSED)
-		gdk_window_clear_area(monitor_display_drawingarea->window,
-		                      update_rect.x,     update_rect.y,
-		                      update_rect.width, update_rect.height);
-	else
-		gtk_widget_draw(monitor_display_drawingarea, &update_rect);
-
-	/*** Output Buffer ***/
-	if (monitor_closing == CLOSED)
-	{
-		gtk_progress_configure(monitor_output_progress, 0, 0, 0);
-		gtk_progress_bar_set_text(GTK_PROGRESS_BAR(monitor_output_progress), " ");
-		monitor_output_max = 0;
-	}
-	else
-	{
-		if (output_opened && the_op->buffer_playing())
-		{
-			if (output_used < 0)
-				output_used = 0;
-
-			if (output_used > monitor_output_max)
-			{
-				monitor_output_max = output_used;
-				gtk_progress_configure(monitor_output_progress,
-				                       output_used, 0, monitor_output_max);
-			}
-			else
-				gtk_progress_set_value(monitor_output_progress, output_used);
-
-			{
-				gchar temp[32];
-				g_snprintf(temp, sizeof(temp), "%d", output_used);
-				gtk_progress_bar_set_text(GTK_PROGRESS_BAR(monitor_output_progress), temp);
-			}
-		}
-		else
-		{
-			gtk_progress_configure(monitor_output_progress, 0, 0, 0);
-			gtk_progress_bar_set_text(GTK_PROGRESS_BAR(monitor_output_progress), " ");
-			monitor_output_max = 0;
-		}
-	}
-
-	/*** Position ***/
-	if (!xfplayer_input_playing() || (monitor_closing == CLOSED))
-	{
-		gtk_label_set_text(monitor_position_label, default_position_str);
-		gtk_label_set_text(monitor_total_label, default_total_str);
-		gtk_label_set_text(monitor_left_label, default_left_str);
-	}
-	else
-	{
-		gchar buffer[32];
-		gint position = output_time - output_offset;
-		gint total    = xfplaylist_current_length();
-		gint left     = total - position;
-
-		/* position */
-		g_snprintf(buffer, sizeof(buffer),
-		           position < 0 ? "-%d:%02d.%01d" : "%d:%02d.%01d",
-		           ABS(position) / 60000,
-		           ABS(position) / 1000 % 60,
-		           ABS(position) / 100 % 10);
-		gtk_label_set_text(monitor_position_label, buffer);
-
-		/* total */
-		if (total > 0)
-		{
-			g_snprintf(buffer, sizeof(buffer),
-			           "%d:%02d",
-			           total / 60000,
-			           total / 1000 % 60);
-			gtk_label_set_text(monitor_total_label, buffer);
-		}
-		else
-			label_set_text(monitor_total_label, default_total_str);
-
-		/* left */
-		if (total > 0)
-		{
-			g_snprintf(buffer, sizeof(buffer),
-			           left < 0 ? "-%d:%02d" : "%d:%02d",
-			           ABS(left) / 60000,
-			           ABS(left) / 1000 % 60);
-			gtk_label_set_text(monitor_left_label, buffer);
-		}
-		else
-			label_set_text(monitor_left_label, default_left_str);
-	}
-
-	
-	/* Output Plugin position */
-	if (monitor_closing == CLOSED)
-	{
-		gtk_widget_hide(GTK_WIDGET(monitor_output_time_label));
-		gtk_widget_hide(GTK_WIDGET(monitor_output_time_sep));
-		gtk_label_set_text(monitor_written_time_label, default_written_time_str);
-	}
-	else
-	{
-		gchar buffer[32];
-
-		/* check for output plugin bug -- diff should always be 0 */
-		gint diff = written_time - (gint) (output_streampos * 1000 / OUTPUT_BPS);
-		if (diff)
-		{
-			gtk_widget_show(GTK_WIDGET(monitor_output_time_label));
-			gtk_widget_show(GTK_WIDGET(monitor_output_time_sep));
-			g_snprintf(buffer, sizeof(buffer),
-			           output_time < 0 ? "-%d:%02d.%03d" : "%d:%02d.%03d",
-			           ABS(diff) / 60000,
-			           ABS(diff) / 1000 % 60,
-			           ABS(diff) % 1000);
-			gtk_label_set_text(monitor_output_time_label, buffer);
-		}
-		else
-		{
-			gtk_widget_hide(GTK_WIDGET(monitor_output_time_label));
-			gtk_widget_hide(GTK_WIDGET(monitor_output_time_sep));
-		}
-
-		/* written_time */
-		g_snprintf(buffer, sizeof(buffer),
-		           written_time < 0 ? "-%d:%02d:%02d.%01d" : "%d:%02d:%02d.%01d",
-		           ABS(written_time) / 3600000,
-		           ABS(written_time) / 60000 % 60,
-		           ABS(written_time) / 1000 % 60,
-		           ABS(written_time) / 100 % 10);
-		gtk_label_set_text(monitor_written_time_label, buffer);
-	}
-
-	/* unlock buffer */
-	if (monitor_closing != CLOSED)
-		MUTEX_UNLOCK(&buffer_mutex);
-
-	return TRUE;  /* continue calling this function */
-}
-
-void
-xfade_start_monitor()
-{
-	if (monitor_active)
-		return;
-
-	monitor_output_max = 0;
-	monitor_closing = RUNNING;
-	monitor_active = TRUE;
-	monitor_tag = gtk_timeout_add(UPDATE_INTERVAL, xfade_update_monitor, NULL);
-}
-
-void
-xfade_stop_monitor()
-{
-	gint max_wait = UPDATE_INTERVAL / 10 + 1 + 1;	/* round up / add safety */
-
-	if (!monitor_active)
-		return;
-
-	/* HACK, ugly HACK: force a final call of xfade_update_monitor */
-	monitor_closing = CLOSING;
-	while ((monitor_closing == CLOSING) && (max_wait-- > 0))
-		xfade_usleep(10000);
-
-	if (max_wait <= 0)
-		DEBUG(("[crossfade] stop_monitor: timeout!\n"));
-
-	/* stop calling xfade_update_monitor() */
-	gtk_timeout_remove(monitor_tag);
-	monitor_active = FALSE;
-}
-
-#if defined(HAVE_INPUT_SEEK)
-void input_seek(int time);  /* XMMS */
-void
-on_monitor_seekeof_button_clicked(GtkButton *button, gpointer user_data)
-{  
-	gint total    = xfplaylist_current_length();
-	gint offset   = xfade_cfg_offset(&config->fc[FADE_CONFIG_XFADE])
-	              - config->songchange_timeout;
-	gint position = total + offset - 2500;
-
-	if (position < 0)
-		return;
-
-	DEBUG(("[crossfade] monitor_seek_eof: total=%d offset=%d position=%d\n", total, offset, position))
-	
-	input_seek(position/1000);  /* XMMS */
-}
-#else
-void on_monitor_seekeof_button_clicked(GtkButton *button, gpointer user_data)
-{ }
-#endif
--- a/src/crossfade/monitor.h	Fri Apr 24 06:38:48 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/* 
- *  XMMS Crossfade Plugin
- *  Copyright (C) 2000-2007  Peter Eisenlohr <peter@eisenlohr.org>
- *
- *  based on the original OSS Output Plugin
- *  Copyright (C) 1998-2000  Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies
- *
- *  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
- *  (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.
- *
- *  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.
- */
-
-#ifndef _MONITOR_H_
-#define _MONITOR_H_
-
-#include <glib.h>
-
-/* time between updates in ms (default: 33 -> 30 updates per second) */
-#define UPDATE_INTERVAL 33
-
-void xfade_check_monitor_win();
-gint xfade_update_monitor(gpointer userdata);
-void xfade_start_monitor();
-void xfade_stop_monitor();
-
-extern GtkWidget *monitor_win;
-extern GtkWidget *monitor_display_drawingarea;
-extern GtkEntry *monitor_output_entry;
-extern GtkProgress *monitor_output_progress;
-
-#endif /* _MONITOR_H_ */