Commit c7b1c474 authored by Sam Hocevar's avatar Sam Hocevar

  * ./include/modules_inner.h: replaced _X with __VLC_SYMBOL because _X was
    already a system macro under MacOS X.
  * ./plugins/dummy/dummy.c: fixed vlc:loop, vlc:quit, etc. entries.
  * ./plugins/glide/glide.c: activated double buffering.
  * ./plugins/mga/xmga.c: started writing an xmga plugin; doesn't work yet.
  * ./src/input/input.c: fixed the input memory leak, and the insane thread
    spawning we got with vlc:loop.
  * ./src/misc/intf_eject.c: disc ejection routine courtesy of Julien Blache,
    currently Linux-only.
parent 1ae5bed4
......@@ -38,6 +38,10 @@ E: jobi@via.ecp.fr
C: jobi
D: VCD input
N: Julien Blache
E: jb@technologeek.org
D: Disc ejection code
N: Emmanuel Blindauer
E: manu@agat.net
D: aRts audio output
......
List of known vlc bugs
$Id: BUGS,v 1.3 2002/01/05 16:09:49 sam Exp $
$Id: BUGS,v 1.4 2002/01/09 02:01:14 sam Exp $
Please try to keep this file up to date. Also, grep for FIXME in the
source files for more and more bugs to fix.
......@@ -17,10 +17,7 @@ Core:
Input:
* There is a memory leak in the input because the input thread is
never joined for termination.
* vlc:foo targets don't work anymore.
-
Audio output:
......@@ -37,8 +34,6 @@ Video output:
* The DirectX video output plugin is broken because of vout4.
* The GGI video output plugin is broken because of vout4.
* The BeOS video output plugin is broken because of vout4.
* The QNX video output plugin is broken because of vout4.
......@@ -69,3 +64,8 @@ Gtk interface:
* Saving preferences does not work at all.
Misc:
* The Jin-Roh DVD seems to segfault.
......@@ -100,6 +100,7 @@ PLUGINS_TARGETS := ac3_adec/ac3_adec \
memcpy/memcpymmxext \
memcpy/memcpy3dn \
mga/mga \
mga/xmga \
motion/motion \
motion/motionmmx \
motion/motionmmxext \
......@@ -122,7 +123,7 @@ PLUGINS_TARGETS := ac3_adec/ac3_adec \
#
# C Objects
#
INTERFACE := main interface intf_msg intf_playlist
INTERFACE := main interface intf_msg intf_playlist intf_eject
INPUT := input input_ext-dec input_ext-intf input_dec input_programs input_clock mpeg_system
VIDEO_OUTPUT := video_output video_text vout_pictures vout_subpictures
AUDIO_OUTPUT := audio_output aout_ext-dec aout_u8 aout_s8 aout_u16 aout_s16 aout_spdif
......
......@@ -6439,7 +6439,7 @@ if test "${enable_mga+set}" = set; then
enableval="$enable_mga"
if test x$enable_mga = xyes
then
PLUGINS="${PLUGINS} mga"
PLUGINS="${PLUGINS} mga xmga"
fi
fi
......
......@@ -948,7 +948,7 @@ AC_ARG_ENABLE(mga,
[ --enable-mga Linux kernel Matrox support (default disabled)],
[ if test x$enable_mga = xyes
then
PLUGINS="${PLUGINS} mga"
PLUGINS="${PLUGINS} mga xmga"
fi ])
dnl
......
......@@ -3,7 +3,7 @@
* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: common.h,v 1.66 2002/01/07 02:12:29 sam Exp $
* $Id: common.h,v 1.67 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
......@@ -468,6 +468,7 @@ typedef struct module_symbols_s
void ( * intf_PlaylistDestroy ) ( struct playlist_s * );
void ( * intf_PlaylistJumpto ) ( struct playlist_s *, int );
void ( * intf_UrlDecode ) ( char * );
int ( * intf_Eject ) ( const char * );
void ( * msleep ) ( mtime_t );
mtime_t ( * mdate ) ( void );
......@@ -576,6 +577,7 @@ typedef struct module_symbols_s
struct module_s * ( * module_Need ) ( int, char *, struct probedata_s * );
void ( * module_Unneed ) ( struct module_s * );
} module_symbols_t;
#ifdef PLUGIN
......
......@@ -4,7 +4,7 @@
* control the pace of reading.
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-intf.h,v 1.56 2002/01/07 02:12:29 sam Exp $
* $Id: input_ext-intf.h,v 1.57 2002/01/09 02:01:14 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -259,7 +259,7 @@ typedef struct input_thread_s
boolean_t b_error;
boolean_t b_eof;
vlc_thread_t thread_id; /* id for thread functions */
int * pi_status; /* temporary status flag */
int i_status; /* status flag */
/* Input module */
struct module_s * p_input_module;
......@@ -343,7 +343,8 @@ void input_EndBank ( void );
struct input_thread_s * input_CreateThread ( struct playlist_item_s *,
int *pi_status );
void input_DestroyThread ( struct input_thread_s *, int *pi_status );
void input_StopThread ( struct input_thread_s *, int *pi_status );
void input_DestroyThread ( struct input_thread_s * );
void input_SetStatus ( struct input_thread_s *, int );
void input_Seek ( struct input_thread_s *, off_t );
......
/*****************************************************************************
* intf_eject.h: CD/DVD-ROM ejection handling functions
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: intf_eject.h,v 1.1 2002/01/09 02:01:14 sam Exp $
*
* Author: Julien Blache <jb@technologeek.org>
*
* 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, USA.
*****************************************************************************/
#ifndef PLUGIN
int intf_Eject( const char * );
#else
# define intf_Eject p_symbols->intf_Eject
#endif
......@@ -2,7 +2,7 @@
* modules_inner.h : Macros used from within a module.
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: modules_inner.h,v 1.10 2001/12/30 07:09:54 sam Exp $
* $Id: modules_inner.h,v 1.11 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -56,15 +56,15 @@
/* If the module is built-in, then we need to define foo_InitModule instead
* of InitModule. Same for Activate- and DeactivateModule. */
#ifdef BUILTIN
# define _M( function ) CONCATENATE( function, MODULE_NAME )
# define _X( function ) CONCATENATE( function, MODULE_NAME )
# define DECLARE_SYMBOLS ;
# define STORE_SYMBOLS ;
# define _M( function ) CONCATENATE( function, MODULE_NAME )
# define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_NAME )
# define DECLARE_SYMBOLS ;
# define STORE_SYMBOLS ;
#else
# define _M( function ) function
# define _X( function ) CONCATENATE( function, MODULE_SYMBOL )
# define DECLARE_SYMBOLS module_symbols_t* p_symbols;
# define STORE_SYMBOLS p_symbols = p_module->p_symbols;
# define _M( function ) function
# define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_SYMBOL )
# define DECLARE_SYMBOLS module_symbols_t* p_symbols;
# define STORE_SYMBOLS p_symbols = p_module->p_symbols;
#endif
#define MODULE_STRING STRINGIFY( MODULE_NAME )
......@@ -75,7 +75,7 @@
* instance the module name, its shortcuts, its capabilities...
*/
#define MODULE_INIT_START \
int _X( InitModule ) ( module_t *p_module ) \
int __VLC_SYMBOL( InitModule ) ( module_t *p_module ) \
{ \
int i_shortcut = 0; \
p_module->psz_name = MODULE_STRING; \
......@@ -115,7 +115,7 @@
#define MODULE_ACTIVATE_START \
DECLARE_SYMBOLS; \
\
int _X( ActivateModule ) ( module_t *p_module ) \
int __VLC_SYMBOL( ActivateModule ) ( module_t *p_module ) \
{ \
p_module->p_functions = \
( module_functions_t * )malloc( sizeof( module_functions_t ) ); \
......@@ -136,7 +136,7 @@
* here.
*/
#define MODULE_DEACTIVATE_START \
int _X( DeactivateModule )( module_t *p_module ) \
int __VLC_SYMBOL( DeactivateModule )( module_t *p_module ) \
{ \
free( p_module->p_functions );
......
......@@ -2,7 +2,7 @@
* dummy.c : dummy plugin for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: dummy.c,v 1.13 2001/12/30 07:09:55 sam Exp $
* $Id: dummy.c,v 1.14 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -50,10 +50,11 @@ MODULE_INIT_START
SET_DESCRIPTION( "dummy functions module" )
/* Capability score set to 0 because we don't want to be spawned
* unless explicitly requested to */
ADD_CAPABILITY( INPUT, 0 )
ADD_CAPABILITY( AOUT, 0 )
ADD_CAPABILITY( VOUT, 0 )
ADD_CAPABILITY( INTF, 0 )
/* This one is ok. */
ADD_CAPABILITY( INPUT, 100 )
ADD_SHORTCUT( "dummy" )
MODULE_INIT_STOP
......
......@@ -2,7 +2,7 @@
* input_dummy.c: dummy input plugin, to manage "vlc:***" special options
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: input_dummy.c,v 1.12 2002/01/04 14:01:34 sam Exp $
* $Id: input_dummy.c,v 1.13 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -89,10 +89,10 @@ static int DummyProbe( probedata_t *p_data )
if( ( strlen(psz_name) > 4 ) && !strncasecmp( psz_name, "vlc:", 4 ) )
{
/* If the user specified "vlc:" then it's probably a file */
return( 100 );
return( 1 );
}
return( 1 );
return( 0 );
}
/*****************************************************************************
......@@ -153,7 +153,6 @@ static void DummyOpen( input_thread_t * p_input )
}
intf_ErrMsg( "input error: unknown command `%s'", psz_name );
}
/*****************************************************************************
......
......@@ -2,7 +2,7 @@
* wall.c : Wall video plugin for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: wall.c,v 1.9 2002/01/07 17:02:07 sam Exp $
* $Id: wall.c,v 1.10 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -134,8 +134,8 @@ static int vout_Create( vout_thread_t *p_vout )
return( 1 );
}
p_vout->p_sys->i_col = 3;
p_vout->p_sys->i_row = 3;
p_vout->p_sys->i_col = 6;
p_vout->p_sys->i_row = 6;
p_vout->p_sys->pp_vout = malloc( p_vout->p_sys->i_row *
p_vout->p_sys->i_col *
......
......@@ -2,7 +2,7 @@
* glide.c : 3dfx Glide plugin for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: glide.c,v 1.10 2002/01/07 02:12:29 sam Exp $
* $Id: glide.c,v 1.11 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -60,7 +60,6 @@ static int vout_Manage ( vout_thread_t * );
static void vout_Render ( vout_thread_t *, picture_t * );
static void vout_Display ( vout_thread_t *, picture_t * );
static int NewPicture ( vout_thread_t *, picture_t * );
static int OpenDisplay ( vout_thread_t * );
static void CloseDisplay ( vout_thread_t * );
......@@ -94,9 +93,8 @@ typedef struct vout_sys_s
{
GrLfbInfo_t p_buffer_info; /* back buffer info */
/* Dummy video memory */
byte_t * p_video; /* base adress */
size_t i_page_size; /* page size */
u8* pp_buffer[2];
int i_index;
} vout_sys_t;
......@@ -167,36 +165,49 @@ int vout_Init( vout_thread_t *p_vout )
I_OUTPUTPICTURES = 0;
/* Try to initialize up to 1 direct buffers */
while( I_OUTPUTPICTURES < 1 )
{
p_pic = NULL;
/* Find an empty picture slot */
for( i_index = 0 ; i_index < VOUT_MAX_PICTURES ; i_index++ )
{
if( p_vout->p_picture[ i_index ].i_status == FREE_PICTURE )
{
p_pic = p_vout->p_picture + i_index;
break;
}
}
p_pic = NULL;
/* Allocate the picture */
if( p_pic == NULL || NewPicture( p_vout, p_pic ) )
/* Find an empty picture slot */
for( i_index = 0 ; i_index < VOUT_MAX_PICTURES ; i_index++ )
{
if( p_vout->p_picture[ i_index ].i_status == FREE_PICTURE )
{
p_pic = p_vout->p_picture + i_index;
break;
}
}
p_pic->i_status = DESTROYED_PICTURE;
p_pic->i_type = DIRECT_PICTURE;
if( p_pic == NULL )
{
return -1;
}
PP_OUTPUTPICTURE[ I_OUTPUTPICTURES ] = p_pic;
/* We know the chroma, allocate a buffer which will be used
* directly by the decoder */
p_pic->i_planes = 1;
I_OUTPUTPICTURES++;
}
p_pic->p->p_pixels = p_vout->p_sys->pp_buffer[p_vout->p_sys->i_index];
p_pic->p->i_pixel_bytes = GLIDE_BYTES_PER_PIXEL;
p_pic->p->i_lines = GLIDE_HEIGHT;
return( 0 );
p_pic->p->b_margin = 1;
p_pic->p->b_hidden = 1;
p_pic->p->i_visible_bytes = GLIDE_WIDTH * GLIDE_BYTES_PER_PIXEL;
p_pic->p->i_pitch = p_vout->p_sys->p_buffer_info.strideInBytes;
/*1024 * GLIDE_BYTES_PER_PIXEL*/
p_pic->p->i_red_mask = 0xf800;
p_pic->p->i_green_mask = 0x07e0;
p_pic->p->i_blue_mask = 0x001f;
p_pic->i_status = DESTROYED_PICTURE;
p_pic->i_type = DIRECT_PICTURE;
PP_OUTPUTPICTURE[ 0 ] = p_pic;
I_OUTPUTPICTURES = 1;
return 0;
}
/*****************************************************************************
......@@ -286,18 +297,6 @@ static int OpenDisplay( vout_thread_t *p_vout )
GrScreenResolution_t resolution = GR_RESOLUTION_800x600;
GrLfbInfo_t p_front_buffer_info; /* front buffer info */
p_vout->p_sys->i_page_size = GLIDE_WIDTH * GLIDE_HEIGHT
* GLIDE_BYTES_PER_PIXEL;
/* Map two framebuffers a the very beginning of the fb */
p_vout->p_sys->p_video = malloc( p_vout->p_sys->i_page_size * 2 );
if( (int)p_vout->p_sys->p_video == -1 )
{
intf_ErrMsg( "vout error: can't map video memory (%s)",
strerror(errno) );
return( 1 );
}
grGlideGetVersion( version );
grGlideInit();
......@@ -308,8 +307,8 @@ static int OpenDisplay( vout_thread_t *p_vout )
}
grSstSelect( 0 );
if( !grSstWinOpen(0, resolution, GR_REFRESH_60Hz,
GR_COLORFORMAT_ABGR, GR_ORIGIN_UPPER_LEFT, 2, 1) )
if( !grSstWinOpen( 0, resolution, GR_REFRESH_60Hz,
GR_COLORFORMAT_ABGR, GR_ORIGIN_UPPER_LEFT, 2, 1 ) )
{
intf_ErrMsg( "vout error: can't open 3dfx screen" );
return( 1 );
......@@ -347,10 +346,14 @@ static int OpenDisplay( vout_thread_t *p_vout )
grGlideShutdown();
return( 1 );
}
grLfbUnlock(GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER );
grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER );
grBufferClear( 0, 0, 0 );
p_vout->p_sys->pp_buffer[0] = p_vout->p_sys->p_buffer_info.lfbPtr;
p_vout->p_sys->pp_buffer[1] = p_front_buffer_info.lfbPtr;
p_vout->p_sys->i_index = 0;
return( 0 );
}
......@@ -367,34 +370,5 @@ static void CloseDisplay( vout_thread_t *p_vout )
/* shutdown Glide */
grGlideShutdown();
free( p_vout->p_sys->p_video );
}
/*****************************************************************************
* NewPicture: allocate a picture
*****************************************************************************
* Returns 0 on success, -1 otherwise
*****************************************************************************/
static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
{
/* We know the chroma, allocate a buffer which will be used
* directly by the decoder */
p_pic->p->p_pixels = p_vout->p_sys->p_video;
p_pic->p->i_pixel_bytes = GLIDE_BYTES_PER_PIXEL;
p_pic->p->i_lines = GLIDE_HEIGHT;
p_pic->p->b_margin = 1;
p_pic->p->b_hidden = 1;
p_pic->p->i_visible_bytes = GLIDE_WIDTH * GLIDE_BYTES_PER_PIXEL;
p_pic->p->i_pitch = p_vout->p_sys->p_buffer_info.strideInBytes;
/*1024 * GLIDE_BYTES_PER_PIXEL*/
p_pic->p->i_red_mask = 0xf800;
p_pic->p->i_green_mask = 0x07e0;
p_pic->p->i_blue_mask = 0x001f;
p_pic->i_planes = 1;
return 0;
}
......@@ -2,7 +2,7 @@
* gnome.c : Gnome plugin for vlc
*****************************************************************************
* Copyright (C) 2000 VideoLAN
* $Id: gnome.c,v 1.6 2002/01/07 02:12:29 sam Exp $
* $Id: gnome.c,v 1.7 2002/01/09 02:01:14 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -329,53 +329,56 @@ static gint GnomeManage( gpointer p_data )
{
vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );
/* New input or stream map change */
if( p_input_bank->pp_input[0]->stream.b_changed )
if( !p_input_bank->pp_input[0]->b_die )
{
GtkModeManage( p_intf );
GtkSetupMenus( p_intf );
p_intf->p_sys->b_playing = 1;
}
/* Manage the slider */
if( p_input_bank->pp_input[0]->stream.b_seekable )
{
float newvalue;
newvalue = p_intf->p_sys->p_adj->value;
#define p_area p_input_bank->pp_input[0]->stream.p_selected_area
/* If the user hasn't touched the slider since the last time,
* then the input can safely change it */
if( newvalue == p_intf->p_sys->f_adj_oldvalue )
/* New input or stream map change */
if( p_input_bank->pp_input[0]->stream.b_changed )
{
/* Update the value */
p_intf->p_sys->p_adj->value = p_intf->p_sys->f_adj_oldvalue =
( 100. * p_area->i_tell ) / p_area->i_size;
gtk_signal_emit_by_name( GTK_OBJECT( p_intf->p_sys->p_adj ),
"value_changed" );
GtkModeManage( p_intf );
GtkSetupMenus( p_intf );
p_intf->p_sys->b_playing = 1;
}
/* Otherwise, send message to the input if the user has
* finished dragging the slider */
else if( p_intf->p_sys->b_slider_free )
/* Manage the slider */
if( p_input_bank->pp_input[0]->stream.b_seekable )
{
off_t i_seek = ( newvalue * p_area->i_size ) / 100;
float newvalue;
newvalue = p_intf->p_sys->p_adj->value;
vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );
input_Seek( p_input_bank->pp_input[0], i_seek );
vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );
#define p_area p_input_bank->pp_input[0]->stream.p_selected_area
/* If the user hasn't touched the slider since the last time,
* then the input can safely change it */
if( newvalue == p_intf->p_sys->f_adj_oldvalue )
{
/* Update the value */
p_intf->p_sys->p_adj->value = p_intf->p_sys->f_adj_oldvalue =
( 100. * p_area->i_tell ) / p_area->i_size;
/* Update the old value */
p_intf->p_sys->f_adj_oldvalue = newvalue;
}
gtk_signal_emit_by_name( GTK_OBJECT( p_intf->p_sys->p_adj ),
"value_changed" );
}
/* Otherwise, send message to the input if the user has
* finished dragging the slider */
else if( p_intf->p_sys->b_slider_free )
{
off_t i_seek = ( newvalue * p_area->i_size ) / 100;
vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );
input_Seek( p_input_bank->pp_input[0], i_seek );
vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );
/* Update the old value */
p_intf->p_sys->f_adj_oldvalue = newvalue;
}
#undef p_area
}
}
if( p_intf->p_sys->i_part !=
p_input_bank->pp_input[0]->stream.p_selected_area->i_part )
{
p_intf->p_sys->b_chapter_update = 1;
GtkSetupMenus( p_intf );
if( p_intf->p_sys->i_part !=
p_input_bank->pp_input[0]->stream.p_selected_area->i_part )
{
p_intf->p_sys->b_chapter_update = 1;
GtkSetupMenus( p_intf );
}
}
vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );
......
......@@ -93,7 +93,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarFileOpenActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:27:02 GMT</last_modification_time>
</signal>
<label>_Open File...</label>
......@@ -108,7 +107,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarDiscOpenActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:27:10 GMT</last_modification_time>
</signal>
<label>Open _Disc...</label>
......@@ -122,9 +120,8 @@
<tooltip>Select a Network Stream</tooltip>
<signal>
<name>activate</name>
<handler>GnomeMenbarNetworkOpenActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:27:39 GMT</last_modification_time>
<handler>GnomeMenubarNetworkOpenActivate</handler>
<last_modification_time>Fri, 21 Dec 2001 13:11:28 GMT</last_modification_time>
</signal>
<label>_Network Stream...</label>
<right_justify>False</right_justify>
......@@ -137,13 +134,32 @@
<right_justify>False</right_justify>
</widget>
<widget>
<class>GtkPixmapMenuItem</class>
<name>menubar_eject</name>
<tooltip>Eject disc</tooltip>
<signal>
<name>activate</name>
<handler>GnomeMenubarDiscEjectActivate</handler>
<last_modification_time>Fri, 21 Dec 2001 13:11:28 GMT</last_modification_time>
</signal>
<label>_Eject Disc</label>
<right_justify>False</right_justify>
<stock_icon>GNOME_STOCK_MENU_TOP</stock_icon>
</widget>
<widget>
<class>GtkMenuItem</class>
<name>separator15</name>
<right_justify>False</right_justify>
</widget>
<widget>
<class>GtkPixmapMenuItem</class>
<name>menubar_exit</name>
<signal>
<name>activate</name>
<handler>GnomeMenubarExitActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:27:52 GMT</last_modification_time>
</signal>
<stock_item>GNOMEUIINFO_MENU_EXIT_ITEM</stock_item>
......@@ -166,7 +182,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarWindowToggleActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:28:06 GMT</last_modification_time>
</signal>
<label>_Hide interface</label>
......@@ -179,7 +194,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarFullscreenActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:28:15 GMT</last_modification_time>
</signal>
<label>_Fullscreen</label>
......@@ -232,7 +246,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarPlaylistActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:28:41 GMT</last_modification_time>
</signal>
<label>_Playlist...</label>
......@@ -248,7 +261,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarModulesActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:28:53 GMT</last_modification_time>
</signal>
<label>_Modules...</label>
......@@ -297,7 +309,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarPreferencesActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:29:03 GMT</last_modification_time>
</signal>
<stock_item>GNOMEUIINFO_MENU_PREFERENCES_ITEM</stock_item>
......@@ -320,7 +331,6 @@
<signal>
<name>activate</name>
<handler>GnomeMenubarAboutActivate</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Sat, 19 May 2001 16:29:19 GMT</last_modification_time>
</signal>
<stock_item>GNOMEUIINFO_MENU_ABOUT_ITEM</stock_item>
......@@ -434,6 +444,21 @@
<stock_pixmap>GNOME_STOCK_PIXMAP_STOP</stock_pixmap>
</widget>
<widget>
<class>GtkButton</class>
<child_name>Toolbar:button</child_name>
<name>toolbar_eject</name>
<tooltip>Eject disc</tooltip>
<signal>
<name>button_press_event</name>
<handler>GtkDiscEject</handler>
<data>&quot;intf_window&quot;</data>
<last_modification_time>Fri, 21 Dec 2001 15:24:18 GMT</last_modification_time>
</signal>
<label>Eject</label>
<stock_pixmap>GNOME_STOCK_PIXMAP_TOP</stock_pixmap>
</widget>
<widget>
<class>GtkButton</class>
<child_name>Toolbar:button</child_name>
......
......@@ -30,12 +30,18 @@ GnomeMenubarDiscOpenActivate (GtkMenuItem *menuitem,
void
GnomeMenbarNetworkOpenActivate (GtkMenuItem *menuitem,
GnomeMenubarNetworkOpenActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
}
void
GnomeMenubarDiscEjectActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
GtkDiscEject( GTK_WIDGET( menuitem ), NULL, "intf_window" );
}
void
GnomeMenubarExitActivate (GtkMenuItem *menuitem,
......@@ -259,6 +265,3 @@ GnomePopupJumpActivate (GtkMenuItem *menuitem,
{
GtkJumpShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
}
......@@ -11,7 +11,11 @@ GnomeMenubarDiscOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
GnomeMenbarNetworkOpenActivate (GtkMenuItem *menuitem,
GnomeMenubarNetworkOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
GnomeMenubarDiscEjectActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
......@@ -141,3 +145,4 @@ GtkNetworkOpenBroadcast (GtkToggleButton *togglebutton,
void
GtkNetworkOpenChannel (GtkToggleButton *togglebutton,
gpointer user_data);