totem r5828 - in trunk: . data src src/backend
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: totem r5828 - in trunk: . data src src/backend
- Date: Fri, 5 Dec 2008 17:19:45 +0000 (UTC)
Author: hadess
Date: Fri Dec 5 17:19:45 2008
New Revision: 5828
URL: http://svn.gnome.org/viewvc/totem?rev=5828&view=rev
Log:
2008-12-05 Bastien Nocera <hadess hadess net>
* configure.in:
* data/totem.ui:
* src/backend/bacon-video-widget-gst-0.10.c
(bacon_video_widget_realize), (bacon_video_widget_unrealize),
(bacon_video_widget_set_fullscreen), (bacon_video_widget_new):
* src/backend/bacon-video-widget-xine.c
(bacon_video_widget_realize), (bacon_video_widget_unrealize),
(bacon_video_widget_set_fullscreen):
* src/backend/bacon-video-widget.h:
* src/totem-preferences.c (totem_setup_preferences):
* src/totem-preferences.h:
* src/totem.c (video_widget_create): Kill NVTV support,
nv supports tv-out through XRandR for the G80 (GeForce 8000) and up,
and nouveau for pretty much everything it supports
(Closes: #473692)
Modified:
trunk/ChangeLog
trunk/configure.in
trunk/data/totem.ui
trunk/src/backend/bacon-video-widget-gst-0.10.c
trunk/src/backend/bacon-video-widget-xine.c
trunk/src/backend/bacon-video-widget.h
trunk/src/totem-preferences.c
trunk/src/totem-preferences.h
trunk/src/totem.c
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Fri Dec 5 17:19:45 2008
@@ -55,15 +55,6 @@
PLUGINDIR='${libdir}/totem/plugins'
AC_SUBST(PLUGINDIR)
-AC_ARG_ENABLE(nvtv, AC_HELP_STRING([--enable-nvtv],[Enable support for TV-output with nvtv]), enable_nvtv="$enableval", enable_nvtv=yes)
-
-if test x$enable_nvtv = xyes; then
-PKG_CHECK_MODULES(NVTV, nvtvsimple >= 0.4.5, found_nvtv=yes, found_nvtv=no)
- if test x"$found_nvtv" = "xyes" ; then
- AC_DEFINE(HAVE_NVTV,1,[Define to 1 if nvtv is available and used.])
- fi
-fi
-
dnl xine or gst ?
dnl the two versions here implicate the gstreamer core and gst-plugins
@@ -905,11 +896,6 @@
AC_MSG_NOTICE([ Easy codec installation support disabled])
fi
fi
-if test x$found_nvtv = xyes ; then
- AC_MSG_NOTICE([** nvtv support enabled])
-else
- AC_MSG_NOTICE([ nvtv support disabled])
-fi
if test x$enable_python = xyes ; then
AC_MSG_NOTICE([** Python binding support enabled])
else
Modified: trunk/data/totem.ui
==============================================================================
--- trunk/data/totem.ui (original)
+++ trunk/data/totem.ui Fri Dec 5 17:19:45 2008
@@ -841,133 +841,6 @@
</child>
<child>
- <object class="GtkVBox" id="vbox4">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <object class="GtkLabel" id="tpw_tvout_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">TV-Out</property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xscale">1</property>
- <property name="yscale">1</property>
- <property name="top_padding">0</property>
- <property name="bottom_padding">0</property>
- <property name="left_padding">12</property>
- <property name="right_padding">0</property>
-
- <child>
- <object class="GtkVBox" id="vbox5">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <object class="GtkRadioButton" id="tpw_notvout_radio_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_No TV-out</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="tvout_toggled_cb"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkRadioButton" id="tpw_nvtvntscmode_radio_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">TV-out in fullscreen by Nvidia (NTSC)</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">tpw_notvout_radio_button</property>
- <signal name="toggled" handler="tvout_toggled_cb"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkRadioButton" id="tpw_nvtvpalmode_radio_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">TV-out in fullscreen by Nvidia (PAL)</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">tpw_notvout_radio_button</property>
- <signal name="toggled" handler="tvout_toggled_cb"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
<object class="GtkVBox" id="vbox6">
<property name="visible">True</property>
<property name="homogeneous">False</property>
Modified: trunk/src/backend/bacon-video-widget-gst-0.10.c
==============================================================================
--- trunk/src/backend/bacon-video-widget-gst-0.10.c (original)
+++ trunk/src/backend/bacon-video-widget-gst-0.10.c Fri Dec 5 17:19:45 2008
@@ -30,10 +30,6 @@
#include <config.h>
-#ifdef HAVE_NVTV
-#include <nvtv_simple.h>
-#endif
-
#include <gst/gst.h>
/* GStreamer Interfaces */
@@ -190,7 +186,6 @@
gchar *media_device;
BaconVideoWidgetAudioOutType speakersetup;
- TvOutType tv_out_type;
gint connection_speed;
GstMessageType ignore_messages_mask;
@@ -565,12 +560,6 @@
bacon_video_widget_gst_missing_plugins_setup (bvw);
-#ifdef HAVE_NVTV
- if (!(nvtv_simple_init() && nvtv_enable_autoresize(TRUE))) {
- nvtv_simple_enable(FALSE);
- }
-#endif
-
bvw->priv->bacon_resize = bacon_resize_new (widget);
}
@@ -579,11 +568,6 @@
{
BaconVideoWidget *bvw = BACON_VIDEO_WIDGET (widget);
-#ifdef HAVE_NVTV
- /* Kill the TV out */
- nvtv_simple_exit();
-#endif
-
g_object_unref (bvw->priv->bacon_resize);
gdk_window_set_user_data (bvw->priv->video_window, NULL);
gdk_window_destroy (bvw->priv->video_window);
@@ -2303,34 +2287,6 @@
return FALSE;
}
-void
-bacon_video_widget_set_tv_out (BaconVideoWidget * bvw, TvOutType tvout)
-{
- g_return_if_fail (bvw != NULL);
- g_return_if_fail (BACON_IS_VIDEO_WIDGET (bvw));
-
- bvw->priv->tv_out_type = tvout;
- gconf_client_set_int (bvw->priv->gc,
- GCONF_PREFIX"/tv_out_type", tvout, NULL);
-
-#ifdef HAVE_NVTV
- if (tvout == TV_OUT_NVTV_PAL) {
- nvtv_simple_set_tvsystem(NVTV_SIMPLE_TVSYSTEM_PAL);
- } else if (tvout == TV_OUT_NVTV_NTSC) {
- nvtv_simple_set_tvsystem(NVTV_SIMPLE_TVSYSTEM_NTSC);
- }
-#endif
-}
-
-TvOutType
-bacon_video_widget_get_tv_out (BaconVideoWidget * bvw)
-{
- g_return_val_if_fail (bvw != NULL, 0);
- g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), 0);
-
- return bvw->priv->tv_out_type;
-}
-
static gint
get_num_audio_channels (BaconVideoWidget * bvw)
{
@@ -3222,30 +3178,6 @@
return vol;
}
-gboolean
-bacon_video_widget_fullscreen_mode_available (BaconVideoWidget *bvw,
- TvOutType tvout)
-{
- switch(tvout) {
- case TV_OUT_NONE:
- /* Assume that ordinary fullscreen always works */
- return TRUE;
- case TV_OUT_NVTV_NTSC:
- case TV_OUT_NVTV_PAL:
-#ifdef HAVE_NVTV
- /* Make sure nvtv is initialized, it will not do any harm
- * if it is done twice any way */
- if (!(nvtv_simple_init() && nvtv_enable_autoresize(TRUE))) {
- nvtv_simple_enable(FALSE);
- }
- return (nvtv_simple_is_available());
-#else
- return FALSE;
-#endif
- }
- return FALSE;
-}
-
void
bacon_video_widget_set_fullscreen (BaconVideoWidget * bvw,
gboolean fullscreen)
@@ -3259,33 +3191,14 @@
"have-xvidmode", &have_xvidmode,
NULL);
- if (have_xvidmode == FALSE &&
- bvw->priv->tv_out_type != TV_OUT_NVTV_NTSC &&
- bvw->priv->tv_out_type != TV_OUT_NVTV_PAL)
+ if (have_xvidmode == FALSE)
return;
bvw->priv->fullscreen_mode = fullscreen;
if (fullscreen == FALSE)
{
-#ifdef HAVE_NVTV
- /* If NVTV is used */
- if (nvtv_simple_get_state() == NVTV_SIMPLE_TV_ON) {
- nvtv_simple_switch(NVTV_SIMPLE_TV_OFF,0,0);
-
- /* Else if just auto resize is used */
- } else if (bvw->priv->auto_resize != FALSE) {
-#endif
- bacon_resize_restore (bvw->priv->bacon_resize);
-#ifdef HAVE_NVTV
- }
- /* Turn fullscreen on with NVTV if that option is on */
- } else if ((bvw->priv->tv_out_type == TV_OUT_NVTV_NTSC) ||
- (bvw->priv->tv_out_type == TV_OUT_NVTV_PAL)) {
- nvtv_simple_switch(NVTV_SIMPLE_TV_ON,
- bvw->priv->video_width,
- bvw->priv->video_height);
-#endif
+ bacon_resize_restore (bvw->priv->bacon_resize);
/* Turn fullscreen on when we have xvidmode */
} else if (have_xvidmode != FALSE) {
bacon_resize_resize (bvw->priv->bacon_resize);
@@ -5088,7 +5001,6 @@
bvw->priv->visq = VISUAL_SMALL;
bvw->priv->show_vfx = FALSE;
bvw->priv->vis_element_name = g_strdup ("goom");
- bvw->priv->tv_out_type = TV_OUT_NONE;
bvw->priv->connection_speed = 11;
bvw->priv->ratio_type = BVW_RATIO_AUTO;
@@ -5379,12 +5291,6 @@
/* tv/conn (not used yet) */
confvalue = gconf_client_get_without_default (bvw->priv->gc,
- GCONF_PREFIX "/tv_out_type", NULL);
- if (confvalue != NULL) {
- bvw->priv->tv_out_type = gconf_value_get_int (confvalue);
- gconf_value_free (confvalue);
- }
- confvalue = gconf_client_get_without_default (bvw->priv->gc,
GCONF_PREFIX "/connection_speed", NULL);
if (confvalue != NULL) {
bacon_video_widget_set_connection_speed (bvw,
Modified: trunk/src/backend/bacon-video-widget-xine.c
==============================================================================
--- trunk/src/backend/bacon-video-widget-xine.c (original)
+++ trunk/src/backend/bacon-video-widget-xine.c Fri Dec 5 17:19:45 2008
@@ -23,11 +23,6 @@
#include <config.h>
-#ifdef HAVE_NVTV
-#include <nvtv_simple.h>
-#endif
-
-
/* system */
#include <math.h>
#include <string.h>
@@ -180,7 +175,6 @@
guint tick_id;
double volume;
BaconVideoWidgetAudioOutType audio_out_type;
- TvOutType tvout;
gint64 stream_length;
int zoom;
@@ -1266,12 +1260,6 @@
xine_event_create_listener_thread (bvw->priv->ev_queue,
xine_event, (void *) bvw);
-#ifdef HAVE_NVTV
- if (!(nvtv_simple_init() && nvtv_enable_autoresize(TRUE))) {
- nvtv_simple_enable(FALSE);
- }
-#endif
-
return;
}
@@ -1679,11 +1667,6 @@
CLAMP (vol, 0, 100), NULL);
}
- /* Kill the TV out */
-#ifdef HAVE_NVTV
- nvtv_simple_exit();
-#endif
-
xine_port_send_gui_data (bvw->priv->vo_driver,
XINE_GUI_SEND_WILL_DESTROY_DRAWABLE,
(void*)widget->window);
@@ -2984,33 +2967,6 @@
return bvw->priv->volume;
}
-gboolean
-bacon_video_widget_fullscreen_mode_available (BaconVideoWidget *bvw,
- TvOutType tvout)
-{
- switch(tvout) {
- case TV_OUT_NONE:
- /* Assume that ordinary fullscreen always works */
- return TRUE;
- case TV_OUT_NVTV_NTSC:
- case TV_OUT_NVTV_PAL:
-#ifdef HAVE_NVTV
- /* Make sure nvtv is initialized, it will not do any harm
- * if it is done twice any way */
- if (!(nvtv_simple_init() && nvtv_enable_autoresize(TRUE))) {
- nvtv_simple_enable(FALSE);
- }
- return (nvtv_simple_is_available());
-#else
- return FALSE;
-#endif
- default:
- g_assert_not_reached ();
- }
-
- return FALSE;
-}
-
void
bacon_video_widget_set_fullscreen (BaconVideoWidget *bvw, gboolean fullscreen)
{
@@ -3023,33 +2979,14 @@
"have-xvidmode", &have_xvidmode,
NULL);
- if (have_xvidmode == FALSE &&
- bvw->priv->tvout != TV_OUT_NVTV_NTSC &&
- bvw->priv->tvout != TV_OUT_NVTV_PAL)
+ if (have_xvidmode == FALSE)
return;
bvw->priv->fullscreen_mode = fullscreen;
if (fullscreen == FALSE)
{
-#ifdef HAVE_NVTV
- /* If NVTV is used */
- if (nvtv_simple_get_state() == NVTV_SIMPLE_TV_ON) {
- nvtv_simple_switch(NVTV_SIMPLE_TV_OFF,0,0);
-
- /* Else if just auto resize is used */
- } else if (bvw->priv->auto_resize != FALSE) {
-#endif
- bacon_resize_restore (bvw->priv->bacon_resize);
-#ifdef HAVE_NVTV
- }
- /* Turn fullscreen on with NVTV if that option is on */
- } else if ((bvw->priv->tvout == TV_OUT_NVTV_NTSC) ||
- (bvw->priv->tvout == TV_OUT_NVTV_PAL)) {
- nvtv_simple_switch(NVTV_SIMPLE_TV_ON,
- bvw->priv->video_width,
- bvw->priv->video_height);
-#endif
+ bacon_resize_restore (bvw->priv->bacon_resize);
/* Turn fullscreen on when we have xvidmode */
} else if (have_xvidmode != FALSE) {
bacon_resize_resize (bvw->priv->bacon_resize);
@@ -3159,34 +3096,6 @@
return xine_get_param (bvw->priv->stream, XINE_PARAM_VO_DEINTERLACE);
}
-void
-bacon_video_widget_set_tv_out (BaconVideoWidget *bvw, TvOutType tvout)
-{
- g_return_if_fail (bvw != NULL);
- g_return_if_fail (BACON_IS_VIDEO_WIDGET (bvw));
- g_return_if_fail (bvw->priv->xine != NULL);
-
-#ifdef HAVE_NVTV
- if (tvout == TV_OUT_NVTV_PAL) {
- nvtv_simple_set_tvsystem(NVTV_SIMPLE_TVSYSTEM_PAL);
- } else if (tvout == TV_OUT_NVTV_NTSC) {
- nvtv_simple_set_tvsystem(NVTV_SIMPLE_TVSYSTEM_NTSC);
- }
-#endif
-
- bvw->priv->tvout = tvout;
-}
-
-TvOutType
-bacon_video_widget_get_tv_out (BaconVideoWidget *bvw)
-{
- g_return_val_if_fail (bvw != NULL, 0);
- g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), 0);
- g_return_val_if_fail (bvw->priv->xine != NULL, 0);
-
- return bvw->priv->tvout;
-}
-
gboolean
bacon_video_widget_set_show_visuals (BaconVideoWidget *bvw,
gboolean show_visuals)
Modified: trunk/src/backend/bacon-video-widget.h
==============================================================================
--- trunk/src/backend/bacon-video-widget.h (original)
+++ trunk/src/backend/bacon-video-widget.h Fri Dec 5 17:19:45 2008
@@ -312,20 +312,6 @@
GError **error);
GdkPixbuf *bacon_video_widget_get_current_frame (BaconVideoWidget *bvw);
-/* TV-Out functions */
-typedef enum {
- TV_OUT_NONE,
- TV_OUT_NVTV_PAL,
- TV_OUT_NVTV_NTSC
-} TvOutType;
-
-gboolean bacon_video_widget_fullscreen_mode_available (BaconVideoWidget *bvw,
- TvOutType tvout);
-
-void bacon_video_widget_set_tv_out (BaconVideoWidget *bvw,
- TvOutType tvout);
-TvOutType bacon_video_widget_get_tv_out (BaconVideoWidget *bvw);
-
/* Audio-out functions */
typedef enum {
BVW_AUDIO_SOUND_STEREO,
Modified: trunk/src/totem-preferences.c
==============================================================================
--- trunk/src/totem-preferences.c (original)
+++ trunk/src/totem-preferences.c Fri Dec 5 17:19:45 2008
@@ -51,7 +51,6 @@
void checkbutton2_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
void checkbutton3_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
void checkbutton4_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
-void tvout_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
void connection_combobox_changed (GtkComboBox *combobox, Totem *totem);
void visual_menu_changed (GtkComboBox *combobox, Totem *totem);
void visual_quality_menu_changed (GtkComboBox *combobox, Totem *totem);
@@ -212,22 +211,6 @@
value, NULL);
}
-void
-tvout_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
- TvOutType type;
- gboolean value;
-
- value = gtk_toggle_button_get_active (togglebutton);
- if (value == FALSE)
- return;
-
- type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (togglebutton),
- "tvout_type"));
- bacon_video_widget_set_tv_out
- (BACON_VIDEO_WIDGET (totem->bvw), type);
-}
-
static void
deinterlace_changed_cb (GConfClient *client, guint cnxn_id,
GConfEntry *entry, Totem *totem)
@@ -564,7 +547,6 @@
/* Boldify some labels */
totem_interface_boldify_label (totem->xml, "tpw_network_label");
- totem_interface_boldify_label (totem->xml, "tpw_tvout_label");
totem_interface_boldify_label (totem->xml, "tpw_text_subtitles_label");
totem_interface_boldify_label (totem->xml, "tpw_display_label");
totem_interface_boldify_label (totem->xml, "tpw_visuals_label");
@@ -760,52 +742,6 @@
}
void
-totem_preferences_tvout_setup (Totem *totem)
-{
- GObject *item;
- TvOutType type;
- const char *name;
-
- type = bacon_video_widget_get_tv_out (totem->bvw);
- switch (type)
- {
- case TV_OUT_NONE:
- name = "tpw_notvout_radio_button";
- break;
- case TV_OUT_NVTV_PAL:
- name = "tpw_nvtvpalmode_radio_button";
- break;
- case TV_OUT_NVTV_NTSC:
- name = "tpw_nvtvntscmode_radio_button";
- break;
- default:
- g_assert_not_reached ();
- name = NULL;
- }
-
- item = gtk_builder_get_object (totem->xml, name);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), TRUE);
-
- item = gtk_builder_get_object (totem->xml, "tpw_notvout_radio_button");
- g_object_set_data (item, "tvout_type",
- GINT_TO_POINTER (TV_OUT_NONE));
- gtk_widget_set_sensitive (GTK_WIDGET (item),
- bacon_video_widget_fullscreen_mode_available (totem->bvw, TV_OUT_NONE));
-
- item = gtk_builder_get_object (totem->xml, "tpw_nvtvpalmode_radio_button");
- g_object_set_data (item, "tvout_type",
- GINT_TO_POINTER (TV_OUT_NVTV_PAL));
- gtk_widget_set_sensitive (GTK_WIDGET (item),
- bacon_video_widget_fullscreen_mode_available (totem->bvw, TV_OUT_NVTV_PAL));
-
- item = gtk_builder_get_object (totem->xml, "tpw_nvtvntscmode_radio_button");
- g_object_set_data (item, "tvout_type",
- GINT_TO_POINTER (TV_OUT_NVTV_NTSC));
- gtk_widget_set_sensitive (GTK_WIDGET (item),
- bacon_video_widget_fullscreen_mode_available (totem->bvw, TV_OUT_NVTV_NTSC));
-}
-
-void
totem_preferences_visuals_setup (Totem *totem)
{
char *visual;
Modified: trunk/src/totem-preferences.h
==============================================================================
--- trunk/src/totem-preferences.h (original)
+++ trunk/src/totem-preferences.h Fri Dec 5 17:19:45 2008
@@ -32,7 +32,6 @@
G_BEGIN_DECLS
void totem_setup_preferences (Totem *totem);
-void totem_preferences_tvout_setup (Totem *totem);
void totem_preferences_visuals_setup (Totem *totem);
GtkWidget * bacon_cd_selection_create (void);
Modified: trunk/src/totem.c
==============================================================================
--- trunk/src/totem.c (original)
+++ trunk/src/totem.c Fri Dec 5 17:19:45 2008
@@ -3337,7 +3337,6 @@
g_error_free (err);
}
- totem_preferences_tvout_setup (totem);
totem_action_zoom (totem, ZOOM_RESET);
g_signal_connect_after (G_OBJECT (totem->bvw),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]