2000-02-13 05:31:35 +01:00
|
|
|
/*****************************************************************************
|
1999-08-08 14:42:54 +02:00
|
|
|
* interface.h: interface access for other threads
|
|
|
|
* This library provides basic functions for threads to interact with user
|
|
|
|
* interface, such as message output.
|
2000-02-13 05:31:35 +01:00
|
|
|
*****************************************************************************
|
2000-03-03 08:03:34 +01:00
|
|
|
* Copyright (C) 1999, 2000 VideoLAN
|
2002-02-19 01:50:20 +01:00
|
|
|
* $Id: interface.h,v 1.27 2002/02/19 00:50:18 sam Exp $
|
2000-03-03 08:03:34 +01:00
|
|
|
*
|
2001-03-21 14:42:35 +01:00
|
|
|
* Authors: Vincent Seguin <seguin@via.ecp.fr>
|
2000-03-03 08:03:34 +01:00
|
|
|
*
|
|
|
|
* 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.
|
2000-05-25 00:39:44 +02:00
|
|
|
*
|
2000-03-03 08:03:34 +01:00
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2000-05-25 00:39:44 +02:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
2000-03-03 08:03:34 +01:00
|
|
|
*
|
2000-05-25 00:39:44 +02:00
|
|
|
* 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.
|
2000-03-03 08:03:34 +01:00
|
|
|
*****************************************************************************/
|
|
|
|
|
2000-02-13 05:31:35 +01:00
|
|
|
/*****************************************************************************
|
1999-08-08 14:42:54 +02:00
|
|
|
* intf_thread_t: describe an interface thread
|
2000-02-13 05:31:35 +01:00
|
|
|
*****************************************************************************
|
1999-08-08 14:42:54 +02:00
|
|
|
* This structe describes all interface-specific data of the main (interface)
|
|
|
|
* thread.
|
2000-02-13 05:31:35 +01:00
|
|
|
*****************************************************************************/
|
2000-01-11 00:36:06 +01:00
|
|
|
typedef struct intf_thread_s
|
1999-08-08 14:42:54 +02:00
|
|
|
{
|
2000-02-13 05:31:35 +01:00
|
|
|
boolean_t b_die; /* `die' flag */
|
1999-08-08 14:42:54 +02:00
|
|
|
|
2000-02-13 05:31:35 +01:00
|
|
|
/* Specific interfaces */
|
|
|
|
p_intf_console_t p_console; /* console */
|
|
|
|
p_intf_sys_t p_sys; /* system interface */
|
2000-08-21 11:33:42 +02:00
|
|
|
|
Beginning of Interface II
---------------------------
* Plugins have completely disappeared, we now only use the new module API.
* All intf and vout modules are now independant. So far, only the Gnome
intf module and the SDL vout module have been ported. configure.in has
been modified to reflect the changes (x11 and dummy aren't compiled by
default anymore, while SDL and Gnome are).
Note that this is _not_ Interface II, it's just a step forward. For
instance, it lacks the whole message passing scheme.
Things that should work:
* Right-clicking on the SDL video output window brings the Gnome menu.
* Pause, Play, Exit, About work from the menu or from the interface window.
* The old SDL keys still work.
Things that are broken or may be broken:
* Xlib calls are not locked yet, which may lead to "Unexpected async reply"
errors, and make the vlc segfault.
* Sound only works for the first file.
* The SDL vout_sdl.c file is absolutely ugly and kludgey.
* The vlc immediately quits when no filename is given as an argument. Not
a real bug, but still annoying.
* The Gnome menu does not work in fullscreen mode.
Things that will come soon, maybe tomorrow:
* Complete navigation buttons (fast forward, slow, etc.).
* File/Open menu to add files to the playlist.
* Return of the X11 video output for those of us who do not have SDL.
* Textmode interface for those of us who do not have Gnome.
* aout and vout autospawn (maybe).
2001-02-11 02:15:12 +01:00
|
|
|
/* Plugin used and shortcuts to access its capabilities */
|
|
|
|
struct module_s * p_module;
|
|
|
|
int ( *pf_open ) ( struct intf_thread_s * );
|
|
|
|
void ( *pf_close ) ( struct intf_thread_s * );
|
|
|
|
void ( *pf_run ) ( struct intf_thread_s * );
|
|
|
|
|
|
|
|
/* Interface callback */
|
|
|
|
void ( *pf_manage ) ( struct intf_thread_s * );
|
2000-02-14 09:44:59 +01:00
|
|
|
|
Beginning of Interface II
---------------------------
* Plugins have completely disappeared, we now only use the new module API.
* All intf and vout modules are now independant. So far, only the Gnome
intf module and the SDL vout module have been ported. configure.in has
been modified to reflect the changes (x11 and dummy aren't compiled by
default anymore, while SDL and Gnome are).
Note that this is _not_ Interface II, it's just a step forward. For
instance, it lacks the whole message passing scheme.
Things that should work:
* Right-clicking on the SDL video output window brings the Gnome menu.
* Pause, Play, Exit, About work from the menu or from the interface window.
* The old SDL keys still work.
Things that are broken or may be broken:
* Xlib calls are not locked yet, which may lead to "Unexpected async reply"
errors, and make the vlc segfault.
* Sound only works for the first file.
* The SDL vout_sdl.c file is absolutely ugly and kludgey.
* The vlc immediately quits when no filename is given as an argument. Not
a real bug, but still annoying.
* The Gnome menu does not work in fullscreen mode.
Things that will come soon, maybe tomorrow:
* Complete navigation buttons (fast forward, slow, etc.).
* File/Open menu to add files to the playlist.
* Return of the X11 video output for those of us who do not have SDL.
* Textmode interface for those of us who do not have Gnome.
* aout and vout autospawn (maybe).
2001-02-11 02:15:12 +01:00
|
|
|
/* XXX: new message passing stuff will go here */
|
|
|
|
vlc_mutex_t change_lock;
|
|
|
|
boolean_t b_menu_change;
|
|
|
|
boolean_t b_menu;
|
2000-08-24 16:58:51 +02:00
|
|
|
|
1999-08-08 14:42:54 +02:00
|
|
|
} intf_thread_t;
|
|
|
|
|
2002-02-19 01:50:20 +01:00
|
|
|
/*****************************************************************************
|
|
|
|
* msg_item_t
|
|
|
|
*****************************************************************************
|
|
|
|
* Store a single message. Messages have a maximal size of INTF_MSG_MSGSIZE.
|
|
|
|
*****************************************************************************/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int i_type; /* message type, see below */
|
|
|
|
char * psz_msg; /* the message itself */
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
mtime_t date; /* date of the message */
|
|
|
|
char * psz_file; /* file in which the function was called */
|
|
|
|
char * psz_function; /* function from which the function was called */
|
|
|
|
int i_line; /* line at which the function was called */
|
|
|
|
#endif
|
|
|
|
} msg_item_t;
|
|
|
|
|
|
|
|
/* Message types */
|
|
|
|
#define INTF_MSG_STD 0 /* standard message */
|
|
|
|
#define INTF_MSG_ERR 1 /* error message */
|
|
|
|
#define INTF_MSG_WARN 2 /* warning message */
|
|
|
|
#define INTF_MSG_STAT 3 /* statistic message */
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* intf_subscription_t
|
|
|
|
*****************************************************************************
|
|
|
|
* Used by interface plugins which subscribe to the message queue.
|
|
|
|
*****************************************************************************/
|
|
|
|
typedef struct intf_subscription_s
|
|
|
|
{
|
|
|
|
int i_start;
|
|
|
|
int* pi_stop;
|
|
|
|
|
|
|
|
msg_item_t* p_msg;
|
|
|
|
vlc_mutex_t* p_lock;
|
|
|
|
} intf_subscription_t;
|
|
|
|
|
2000-02-13 05:31:35 +01:00
|
|
|
/*****************************************************************************
|
1999-08-08 14:42:54 +02:00
|
|
|
* Prototypes
|
2000-02-13 05:31:35 +01:00
|
|
|
*****************************************************************************/
|
2002-02-19 01:50:20 +01:00
|
|
|
intf_thread_t * intf_Create ( void );
|
|
|
|
void intf_Destroy ( intf_thread_t * p_intf );
|
|
|
|
|
|
|
|
void intf_MsgCreate ( void );
|
|
|
|
void intf_MsgDestroy ( void );
|
|
|
|
|
|
|
|
#ifndef PLUGIN
|
|
|
|
intf_subscription_t* intf_MsgSub ( void );
|
|
|
|
void intf_MsgUnsub ( intf_subscription_t * );
|
|
|
|
#else
|
|
|
|
# define intf_MsgSub p_symbols->intf_MsgSub
|
|
|
|
# define intf_MsgUnsub p_symbols->intf_MsgUnsub
|
|
|
|
#endif
|
2000-01-11 00:36:06 +01:00
|
|
|
|