* ./plugins/gtk/gnome.c: ported the log window to the GNOME interface.
* ./src/interface/intf_msg.c: messages are sent to the queue even if
-vvvv* wasn't specified.
* gnome.c : Gnome plugin for vlc
*****************************************************************************
* Copyright (C) 2000 VideoLAN
- * $Id: gnome.c,v 1.10 2002/02/19 00:50:19 sam Exp $
+ * $Id: gnome.c,v 1.11 2002/02/20 05:56:17 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
return( 1 );
}
+ p_intf->p_sys->p_sub = intf_MsgSub();
+
/* Initialize Gnome thread */
p_intf->p_sys->b_playing = 0;
p_intf->p_sys->b_popup_changed = 0;
*****************************************************************************/
static void intf_Close( intf_thread_t *p_intf )
{
+ intf_MsgUnsub( p_intf->p_sys->p_sub );
+
/* Destroy structure */
free( p_intf->p_sys );
}
p_intf->p_sys->p_window = create_intf_window( );
p_intf->p_sys->p_popup = create_intf_popup( );
p_intf->p_sys->p_playlist = create_intf_playlist();
+ p_intf->p_sys->p_messages = create_intf_messages();
/* Set the title of the main window */
gtk_window_set_title( GTK_WINDOW(p_intf->p_sys->p_window),
GTK_DEST_DEFAULT_ALL, target_table,
1, GDK_ACTION_COPY );
- /* Get the interface labels */
+ /* Get the slider object */
p_intf->p_sys->p_slider_frame = gtk_object_get_data(
GTK_OBJECT( p_intf->p_sys->p_window ), "slider_frame" );
+
+ /* Configure the log window */
+ p_intf->p_sys->p_messages_text = GTK_TEXT( gtk_object_get_data(
+ GTK_OBJECT(p_intf->p_sys->p_messages ), "messages_textbox" ) );
+ gtk_text_set_line_wrap( p_intf->p_sys->p_messages_text, TRUE);
+ gtk_text_set_word_wrap( p_intf->p_sys->p_messages_text, FALSE);
+
+ /* Get the interface labels */
#define P_LABEL( name ) GTK_LABEL( gtk_object_get_data( \
GTK_OBJECT( p_intf->p_sys->p_window ), name ) )
p_intf->p_sys->p_label_title = P_LABEL( "title_label" );
gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playlist ),
"p_intf", p_intf );
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_messages ),
+ "p_intf", p_intf );
+
gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_adj),
"p_intf", p_intf );
static gint GnomeManage( gpointer p_data )
{
#define p_intf ((intf_thread_t *)p_data)
+ static GdkColor white = { 0, 0xffff, 0xffff, 0xffff };
+ static GdkColor red = { 0, 0xffff, 0x6666, 0x6666 };
+ static GdkColor gray = { 0, 0xaaaa, 0xaaaa, 0xaaaa };
+ GdkColor *p_color;
+
+ int i_start, i_stop;
vlc_mutex_lock( &p_intf->change_lock );
p_intf->b_menu_change = 0;
}
- /* update the playlist */
+ /* Update the log window */
+ vlc_mutex_lock( p_intf->p_sys->p_sub->p_lock );
+ i_stop = *p_intf->p_sys->p_sub->pi_stop;
+ vlc_mutex_unlock( p_intf->p_sys->p_sub->p_lock );
+
+ if( p_intf->p_sys->p_sub->i_start != i_stop )
+ {
+ for( i_start = p_intf->p_sys->p_sub->i_start;
+ i_start != i_stop;
+ i_start = (i_start+1) % INTF_MSG_QSIZE )
+ {
+ /* Append all messages to log window */
+ switch( p_intf->p_sys->p_sub->p_msg[i_start].i_type )
+ {
+ case INTF_MSG_ERR:
+ p_color = &red;
+ break;
+ case INTF_MSG_WARN:
+ p_color = &gray;
+ break;
+ default:
+ p_color = &white;
+ break;
+ }
+
+ gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, p_color,
+ NULL, p_intf->p_sys->p_sub->p_msg[i_start].psz_msg, -1 );
+ gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, p_color,
+ NULL, "\n", -1 );
+ }
+
+ vlc_mutex_lock( p_intf->p_sys->p_sub->p_lock );
+ p_intf->p_sys->p_sub->i_start = i_start;
+ vlc_mutex_unlock( p_intf->p_sys->p_sub->p_lock );
+
+ gtk_text_set_point( p_intf->p_sys->p_messages_text,
+ gtk_text_get_length( p_intf->p_sys->p_messages_text ) );
+ }
+
+ /* Update the playlist */
GtkPlayListManage( p_intf );
if( p_input_bank->pp_input[0] != NULL && !p_intf->b_die )
<right_justify>False</right_justify>
<stock_icon>GNOME_STOCK_MENU_ATTACH</stock_icon>
</widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>menubar_messages</name>
+ <tooltip>Open the messages window</tooltip>
+ <signal>
+ <name>activate</name>
+ <handler>GnomeMenubarMessagesActivate</handler>
+ <last_modification_time>Wed, 20 Feb 2002 05:43:55 GMT</last_modification_time>
+ </signal>
+ <label>Messages...</label>
+ <right_justify>False</right_justify>
+ </widget>
</widget>
</widget>
</widget>
</widget>
+<widget>
+ <class>GnomeDialog</class>
+ <name>intf_messages</name>
+ <signal>
+ <name>destroy</name>
+ <handler>gtk_widget_hide</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Wed, 20 Feb 2002 05:11:27 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>delete_event</name>
+ <handler>gtk_widget_hide</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Wed, 20 Feb 2002 05:11:27 GMT</last_modification_time>
+ </signal>
+ <title>Messages</title>
+ <type>GTK_WINDOW_TOPLEVEL</type>
+ <position>GTK_WIN_POS_NONE</position>
+ <modal>False</modal>
+ <allow_shrink>True</allow_shrink>
+ <allow_grow>True</allow_grow>
+ <auto_shrink>False</auto_shrink>
+ <auto_close>False</auto_close>
+ <hide_on_close>True</hide_on_close>
+
+ <widget>
+ <class>GtkVBox</class>
+ <child_name>GnomeDialog:vbox</child_name>
+ <name>dialog-vbox6</name>
+ <homogeneous>False</homogeneous>
+ <spacing>8</spacing>
+ <child>
+ <padding>4</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkHButtonBox</class>
+ <child_name>GnomeDialog:action_area</child_name>
+ <name>dialog-action_area6</name>
+ <layout_style>GTK_BUTTONBOX_END</layout_style>
+ <spacing>8</spacing>
+ <child_min_width>85</child_min_width>
+ <child_min_height>27</child_min_height>
+ <child_ipad_x>7</child_ipad_x>
+ <child_ipad_y>0</child_ipad_y>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>messages_ok</name>
+ <can_default>True</can_default>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkMessagesOk</handler>
+ <data>"intf_messages"</data>
+ <last_modification_time>Wed, 20 Feb 2002 05:12:11 GMT</last_modification_time>
+ </signal>
+ <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkScrolledWindow</class>
+ <name>scrolledwindow1</name>
+ <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
+ <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
+ <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
+ <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkText</class>
+ <name>messages_textbox</name>
+ <width>600</width>
+ <height>400</height>
+ <can_focus>True</can_focus>
+ <editable>False</editable>
+ <text></text>
+ </widget>
+ </widget>
+ </widget>
+</widget>
+
</GTK-Interface>
{
GtkJumpShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
}
+
+
+void
+GnomeMenubarMessagesActivate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkMessagesShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
+}
+
GtkNetworkOpenChannel (GtkToggleButton *togglebutton,
gpointer user_data);
+
+void
+GnomeMenubarMessagesActivate (GtkMenuItem *menuitem,
+ gpointer user_data);
GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
0, (GdkModifierType) 0, NULL
},
+ {
+ GNOME_APP_UI_ITEM, N_("Messages..."),
+ N_("Open the messages window"),
+ (gpointer) GnomeMenubarMessagesActivate, NULL, NULL,
+ GNOME_APP_PIXMAP_NONE, NULL,
+ 0, (GdkModifierType) 0, NULL
+ },
GNOMEUIINFO_END
};
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_set_sensitive (menubar_view_menu_uiinfo[8].widget, FALSE);
+ gtk_widget_ref (menubar_view_menu_uiinfo[9].widget);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_messages",
+ menubar_view_menu_uiinfo[9].widget,
+ (GtkDestroyNotify) gtk_widget_unref);
+
gtk_widget_ref (menubar_uiinfo[2].widget);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_settings",
menubar_uiinfo[2].widget,
return intf_open;
}
+GtkWidget*
+create_intf_messages (void)
+{
+ GtkWidget *intf_messages;
+ GtkWidget *dialog_vbox6;
+ GtkWidget *scrolledwindow1;
+ GtkWidget *messages_textbox;
+ GtkWidget *dialog_action_area6;
+ GtkWidget *messages_ok;
+
+ intf_messages = gnome_dialog_new (_("Messages"), NULL);
+ gtk_object_set_data (GTK_OBJECT (intf_messages), "intf_messages", intf_messages);
+ gtk_window_set_policy (GTK_WINDOW (intf_messages), TRUE, TRUE, FALSE);
+ gnome_dialog_close_hides (GNOME_DIALOG (intf_messages), TRUE);
+
+ dialog_vbox6 = GNOME_DIALOG (intf_messages)->vbox;
+ gtk_object_set_data (GTK_OBJECT (intf_messages), "dialog_vbox6", dialog_vbox6);
+ gtk_widget_show (dialog_vbox6);
+
+ scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_ref (scrolledwindow1);
+ gtk_object_set_data_full (GTK_OBJECT (intf_messages), "scrolledwindow1", scrolledwindow1,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (scrolledwindow1);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox6), scrolledwindow1, TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+
+ messages_textbox = gtk_text_new (NULL, NULL);
+ gtk_widget_ref (messages_textbox);
+ gtk_object_set_data_full (GTK_OBJECT (intf_messages), "messages_textbox", messages_textbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (messages_textbox);
+ gtk_container_add (GTK_CONTAINER (scrolledwindow1), messages_textbox);
+ gtk_widget_set_usize (messages_textbox, 600, 400);
+
+ dialog_action_area6 = GNOME_DIALOG (intf_messages)->action_area;
+ gtk_object_set_data (GTK_OBJECT (intf_messages), "dialog_action_area6", dialog_action_area6);
+ gtk_widget_show (dialog_action_area6);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END);
+ gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area6), 8);
+
+ gnome_dialog_append_button (GNOME_DIALOG (intf_messages), GNOME_STOCK_BUTTON_OK);
+ messages_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_messages)->buttons)->data);
+ gtk_widget_ref (messages_ok);
+ gtk_object_set_data_full (GTK_OBJECT (intf_messages), "messages_ok", messages_ok,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (messages_ok);
+ GTK_WIDGET_SET_FLAGS (messages_ok, GTK_CAN_DEFAULT);
+
+ gtk_signal_connect (GTK_OBJECT (intf_messages), "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_hide),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (intf_messages), "delete_event",
+ GTK_SIGNAL_FUNC (gtk_widget_hide),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (messages_ok), "clicked",
+ GTK_SIGNAL_FUNC (GtkMessagesOk),
+ "intf_messages");
+
+ return intf_messages;
+}
+
GtkWidget* create_intf_jump (void);
GtkWidget* create_intf_preferences (void);
GtkWidget* create_intf_open (void);
+GtkWidget* create_intf_messages (void);
* gtk.c : Gtk+ plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: gtk.c,v 1.12 2002/02/19 03:54:55 sam Exp $
+ * $Id: gtk.c,v 1.13 2002/02/20 05:56:17 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
GTK_DEST_DEFAULT_ALL, target_table,
1, GDK_ACTION_COPY );
+ /* Get the slider object */
p_intf->p_sys->p_slider_frame = GTK_FRAME( gtk_object_get_data(
GTK_OBJECT( p_intf->p_sys->p_window ), "slider_frame" ) );
+ /* Configure the log window */
p_intf->p_sys->p_messages_text = GTK_TEXT( gtk_object_get_data(
GTK_OBJECT(p_intf->p_sys->p_messages ), "messages_textbox" ) );
gtk_text_set_line_wrap( p_intf->p_sys->p_messages_text, TRUE);
- gtk_text_set_word_wrap( p_intf->p_sys->p_messages_text, TRUE);
+ gtk_text_set_word_wrap( p_intf->p_sys->p_messages_text, FALSE);
/* Get the interface labels */
#define P_LABEL( name ) GTK_LABEL( gtk_object_get_data( \
static gint GtkManage( gpointer p_data )
{
#define p_intf ((intf_thread_t *)p_data)
+ static GdkColor white = { 0, 0xffff, 0xffff, 0xffff };
+ static GdkColor red = { 0, 0xffff, 0x6666, 0x6666 };
+ static GdkColor gray = { 0, 0xaaaa, 0xaaaa, 0xaaaa };
+ GdkColor *p_color;
+
int i_start, i_stop;
vlc_mutex_lock( &p_intf->change_lock );
i_stop = *p_intf->p_sys->p_sub->pi_stop;
vlc_mutex_unlock( p_intf->p_sys->p_sub->p_lock );
- for( i_start = p_intf->p_sys->p_sub->i_start;
- i_start != i_stop;
- i_start = (i_start+1) % INTF_MSG_QSIZE )
+ if( p_intf->p_sys->p_sub->i_start != i_stop )
{
- /* Append all messages to log window */
- gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, NULL, NULL,
- p_intf->p_sys->p_sub->p_msg[i_start].psz_msg, -1 );
- gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, NULL, NULL,
- "\n", -1 );
- }
+ for( i_start = p_intf->p_sys->p_sub->i_start;
+ i_start != i_stop;
+ i_start = (i_start+1) % INTF_MSG_QSIZE )
+ {
+ /* Append all messages to log window */
+ switch( p_intf->p_sys->p_sub->p_msg[i_start].i_type )
+ {
+ case INTF_MSG_ERR:
+ p_color = &red;
+ break;
+ case INTF_MSG_WARN:
+ p_color = &gray;
+ break;
+ default:
+ p_color = &white;
+ break;
+ }
- vlc_mutex_lock( p_intf->p_sys->p_sub->p_lock );
- p_intf->p_sys->p_sub->i_start = i_start;
- vlc_mutex_unlock( p_intf->p_sys->p_sub->p_lock );
+ gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, p_color,
+ NULL, p_intf->p_sys->p_sub->p_msg[i_start].psz_msg, -1 );
+ gtk_text_insert( p_intf->p_sys->p_messages_text, NULL, p_color,
+ NULL, "\n", -1 );
+ }
- gtk_text_set_point( p_intf->p_sys->p_messages_text,
- gtk_text_get_length( p_intf->p_sys->p_messages_text ) );
+ vlc_mutex_lock( p_intf->p_sys->p_sub->p_lock );
+ p_intf->p_sys->p_sub->i_start = i_start;
+ vlc_mutex_unlock( p_intf->p_sys->p_sub->p_lock );
+
+ gtk_text_set_point( p_intf->p_sys->p_messages_text,
+ gtk_text_get_length( p_intf->p_sys->p_messages_text ) );
+ }
/* Update the playlist */
GtkPlayListManage( p_data );
* gtk_callbacks.c : Callbacks for the Gtk+ plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.c,v 1.32 2002/02/19 03:54:55 sam Exp $
+ * $Id: gtk_callbacks.c,v 1.33 2002/02/20 05:56:17 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
GdkEventButton *event,
gpointer user_data)
{
+ static GdkColor black = { 0, 0x0000, 0x0000, 0x0000 };
+ static GdkColormap *colormap;
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
gtk_widget_show( p_intf->p_sys->p_messages );
+ colormap = gdk_colormap_get_system ();
+ gdk_color_alloc( colormap, &black );
+ gdk_window_set_background( p_intf->p_sys->p_messages_text->text_area,
+ &black );
+
gdk_window_raise( p_intf->p_sys->p_messages->window );
+
+ gtk_text_set_point( p_intf->p_sys->p_messages_text,
+ gtk_text_get_length( p_intf->p_sys->p_messages_text ) );
+
return TRUE;
}
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
- */
+/* This file was created automatically by glade and fixed by fixfiles.sh */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <videolan/vlc.h>
#include <sys/types.h>
#include <sys/stat.h>
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (disc_name);
gtk_box_pack_start (GTK_BOX (hbox2), disc_name, TRUE, TRUE, 0);
- gtk_entry_set_text (GTK_ENTRY (disc_name), _("/dev/dvd"));
+ gtk_entry_set_text (GTK_ENTRY (disc_name), DVD_DEVICE);
dialog_action_area1 = GTK_DIALOG (intf_disc)->action_area;
gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_action_area1", dialog_action_area1);
gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_combo, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
- preferences_disc_dvd_combo_items = g_list_append (preferences_disc_dvd_combo_items, (gpointer) _("/dev/dvd"));
+ preferences_disc_dvd_combo_items = g_list_append (preferences_disc_dvd_combo_items, (gpointer) DVD_DEVICE);
gtk_combo_set_popdown_strings (GTK_COMBO (preferences_disc_dvd_combo), preferences_disc_dvd_combo_items);
g_list_free (preferences_disc_dvd_combo_items);
gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_entry", preferences_disc_dvd_entry,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_disc_dvd_entry);
- gtk_entry_set_text (GTK_ENTRY (preferences_disc_dvd_entry), _("/dev/dvd"));
+ gtk_entry_set_text (GTK_ENTRY (preferences_disc_dvd_entry), DVD_DEVICE);
preferences_disc_vcd_combo = gtk_combo_new ();
gtk_widget_ref (preferences_disc_vcd_combo);
/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
+ * This file was created automatically by glade and fixed by fixfiles.sh
*/
#ifdef HAVE_CONFIG_H
/*
* Standard gettext macros.
*/
-#ifdef ENABLE_NLS
+#if defined( ENABLE_NLS ) && defined ( HAVE_GETTEXT )
# include <libintl.h>
# undef _
# define _(String) dgettext (PACKAGE, String)
* lirc.c : lirc plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: lirc.c,v 1.5 2002/02/20 01:47:01 sam Exp $
+ * $Id: lirc.c,v 1.6 2002/02/20 05:56:18 sam Exp $
*
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
*
while( !p_intf->b_die && lirc_nextcode(&code) == 0 )
{
-printf("code\n");
if( code == NULL )
{
continue;
/* Manage core vlc functions through the callback */
p_intf->pf_manage( p_intf );
}
-printf("end of intf\n");
}
* logger.c : file logging plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: logger.c,v 1.2 2002/02/19 03:54:56 sam Exp $
+ * $Id: logger.c,v 1.3 2002/02/20 05:56:18 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
i_stop = *p_sub->pi_stop;
vlc_mutex_unlock( p_sub->p_lock );
- /* Append all messages to log file */
- for( i_start = p_sub->i_start;
- i_start != i_stop;
- i_start = (i_start+1) % INTF_MSG_QSIZE )
+ if( p_sub->i_start != i_stop )
{
- psz_msg = p_sub->p_msg[i_start].psz_msg;
- LOG_STRING( psz_msg, p_file );
- LOG_STRING( "\n", p_file );
+ /* Append all messages to log file */
+ for( i_start = p_sub->i_start;
+ i_start != i_stop;
+ i_start = (i_start+1) % INTF_MSG_QSIZE )
+ {
+ psz_msg = p_sub->p_msg[i_start].psz_msg;
+ LOG_STRING( psz_msg, p_file );
+ LOG_STRING( "\n", p_file );
+ }
+
+ vlc_mutex_lock( p_sub->p_lock );
+ p_sub->i_start = i_start;
+ vlc_mutex_unlock( p_sub->p_lock );
}
-
- vlc_mutex_lock( p_sub->p_lock );
- p_sub->i_start = i_start;
- vlc_mutex_unlock( p_sub->p_lock );
}
* interface, such as message output. See config.h for output configuration.
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: intf_msg.c,v 1.44 2002/02/19 03:54:56 sam Exp $
+ * $Id: intf_msg.c,v 1.45 2002/02/20 05:56:18 sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
/*****************************************************************************
* Local prototypes
*****************************************************************************/
-static void QueueMsg ( int, char *, va_list );
-static void FlushLockedMsg ( void );
+static void QueueMsg ( int, int, char *, va_list );
+static void FlushMsg ( void );
#if defined( WIN32 )
static char *ConvertPrintfFormatString ( char *psz_format );
}
/* Free remaining messages */
- FlushLockedMsg( );
+ FlushMsg( );
}
/*****************************************************************************
va_list ap;
va_start( ap, psz_format );
- QueueMsg( INTF_MSG_STD, psz_format, ap );
+ QueueMsg( INTF_MSG_STD, 0, psz_format, ap );
va_end( ap );
}
va_list ap;
va_start( ap, psz_format );
- QueueMsg( INTF_MSG_ERR, psz_format, ap );
+ QueueMsg( INTF_MSG_ERR, 0, psz_format, ap );
va_end( ap );
}
{
va_list ap;
- if( i_level <= p_main->i_warning_level )
- {
- va_start( ap, psz_format );
- QueueMsg( INTF_MSG_WARN, psz_format, ap );
- va_end( ap );
- }
+ va_start( ap, psz_format );
+ QueueMsg( INTF_MSG_WARN, i_level, psz_format, ap );
+ va_end( ap );
}
/*****************************************************************************
if( p_main->b_stats )
{
va_start( ap, psz_format );
- QueueMsg( INTF_MSG_STAT, psz_format, ap );
+ QueueMsg( INTF_MSG_STAT, 0, psz_format, ap );
va_end( ap );
}
}
* is full. If the message can't be converted to string in memory, it exit the
* program. If the queue is not used, it prints the message immediately.
*****************************************************************************/
-static void QueueMsg( int i_type, char *psz_format, va_list ap )
+static void QueueMsg( int i_type, int i_level, char *psz_format, va_list ap )
{
char * psz_str; /* formatted message string */
msg_item_t * p_item; /* pointer to message */
vlc_mutex_lock( &msg_bank.lock );
/* Send the message to stderr */
- fprintf( stderr, "%s\n", psz_str );
+ if( i_level <= p_main->i_warning_level )
+ {
+ fprintf( stderr, "%s\n", psz_str );
+ }
+ /* Put the message in the queue if there is room for it */
if( ((msg_bank.i_stop - msg_bank.i_start + 1) % INTF_MSG_QSIZE) == 0 )
{
- FlushLockedMsg( );
+ FlushMsg( );
if( ((msg_bank.i_stop - msg_bank.i_start + 1) % INTF_MSG_QSIZE) == 0 )
{
}
/*****************************************************************************
- * FlushLockedMsg (ok ?)
+ * FlushMsg
*****************************************************************************
* Print all messages remaining in queue. MESSAGE QUEUE MUST BE LOCKED, since
* this function does not check the lock.
*****************************************************************************/
-static void FlushLockedMsg ( void )
+static void FlushMsg ( void )
{
int i_index, i_start, i_stop;